

/* this ALWAYS GENERATED file contains the definitions for the interfaces */


 /* File created by MIDL compiler version 8.01.0628 */
/* @@MIDL_FILE_HEADING(  ) */



/* verify that the <rpcndr.h> version is high enough to compile this file*/
#ifndef __REQUIRED_RPCNDR_H_VERSION__
#define __REQUIRED_RPCNDR_H_VERSION__ 501
#endif

/* verify that the <rpcsal.h> version is high enough to compile this file*/
#ifndef __REQUIRED_RPCSAL_H_VERSION__
#define __REQUIRED_RPCSAL_H_VERSION__ 100
#endif

#include "rpc.h"
#include "rpcndr.h"

#ifndef __RPCNDR_H_VERSION__
#error this stub requires an updated version of <rpcndr.h>
#endif /* __RPCNDR_H_VERSION__ */

#ifndef COM_NO_WINDOWS_H
#include "windows.h"
#include "ole2.h"
#endif /*COM_NO_WINDOWS_H*/

#ifndef __cscobj_h__
#define __cscobj_h__

#if defined(_MSC_VER) && (_MSC_VER >= 1020)
#pragma once
#endif

#ifndef DECLSPEC_XFGVIRT
#if defined(_CONTROL_FLOW_GUARD_XFG)
#define DECLSPEC_XFGVIRT(base, func) __declspec(xfg_virtual(base, func))
#else
#define DECLSPEC_XFGVIRT(base, func)
#endif
#endif

/* Forward Declarations */ 

#ifndef __IOfflineFilesEvents_FWD_DEFINED__
#define __IOfflineFilesEvents_FWD_DEFINED__
typedef interface IOfflineFilesEvents IOfflineFilesEvents;

#endif 	/* __IOfflineFilesEvents_FWD_DEFINED__ */


#ifndef __IOfflineFilesEvents2_FWD_DEFINED__
#define __IOfflineFilesEvents2_FWD_DEFINED__
typedef interface IOfflineFilesEvents2 IOfflineFilesEvents2;

#endif 	/* __IOfflineFilesEvents2_FWD_DEFINED__ */


#ifndef __IOfflineFilesEvents3_FWD_DEFINED__
#define __IOfflineFilesEvents3_FWD_DEFINED__
typedef interface IOfflineFilesEvents3 IOfflineFilesEvents3;

#endif 	/* __IOfflineFilesEvents3_FWD_DEFINED__ */


#ifndef __IOfflineFilesEvents4_FWD_DEFINED__
#define __IOfflineFilesEvents4_FWD_DEFINED__
typedef interface IOfflineFilesEvents4 IOfflineFilesEvents4;

#endif 	/* __IOfflineFilesEvents4_FWD_DEFINED__ */


#ifndef __IOfflineFilesEventsFilter_FWD_DEFINED__
#define __IOfflineFilesEventsFilter_FWD_DEFINED__
typedef interface IOfflineFilesEventsFilter IOfflineFilesEventsFilter;

#endif 	/* __IOfflineFilesEventsFilter_FWD_DEFINED__ */


#ifndef __IOfflineFilesErrorInfo_FWD_DEFINED__
#define __IOfflineFilesErrorInfo_FWD_DEFINED__
typedef interface IOfflineFilesErrorInfo IOfflineFilesErrorInfo;

#endif 	/* __IOfflineFilesErrorInfo_FWD_DEFINED__ */


#ifndef __IOfflineFilesSyncErrorItemInfo_FWD_DEFINED__
#define __IOfflineFilesSyncErrorItemInfo_FWD_DEFINED__
typedef interface IOfflineFilesSyncErrorItemInfo IOfflineFilesSyncErrorItemInfo;

#endif 	/* __IOfflineFilesSyncErrorItemInfo_FWD_DEFINED__ */


#ifndef __IOfflineFilesSyncErrorInfo_FWD_DEFINED__
#define __IOfflineFilesSyncErrorInfo_FWD_DEFINED__
typedef interface IOfflineFilesSyncErrorInfo IOfflineFilesSyncErrorInfo;

#endif 	/* __IOfflineFilesSyncErrorInfo_FWD_DEFINED__ */


#ifndef __IOfflineFilesProgress_FWD_DEFINED__
#define __IOfflineFilesProgress_FWD_DEFINED__
typedef interface IOfflineFilesProgress IOfflineFilesProgress;

#endif 	/* __IOfflineFilesProgress_FWD_DEFINED__ */


#ifndef __IOfflineFilesSimpleProgress_FWD_DEFINED__
#define __IOfflineFilesSimpleProgress_FWD_DEFINED__
typedef interface IOfflineFilesSimpleProgress IOfflineFilesSimpleProgress;

#endif 	/* __IOfflineFilesSimpleProgress_FWD_DEFINED__ */


#ifndef __IOfflineFilesSyncProgress_FWD_DEFINED__
#define __IOfflineFilesSyncProgress_FWD_DEFINED__
typedef interface IOfflineFilesSyncProgress IOfflineFilesSyncProgress;

#endif 	/* __IOfflineFilesSyncProgress_FWD_DEFINED__ */


#ifndef __IOfflineFilesSyncConflictHandler_FWD_DEFINED__
#define __IOfflineFilesSyncConflictHandler_FWD_DEFINED__
typedef interface IOfflineFilesSyncConflictHandler IOfflineFilesSyncConflictHandler;

#endif 	/* __IOfflineFilesSyncConflictHandler_FWD_DEFINED__ */


#ifndef __IOfflineFilesItemFilter_FWD_DEFINED__
#define __IOfflineFilesItemFilter_FWD_DEFINED__
typedef interface IOfflineFilesItemFilter IOfflineFilesItemFilter;

#endif 	/* __IOfflineFilesItemFilter_FWD_DEFINED__ */


#ifndef __IOfflineFilesItem_FWD_DEFINED__
#define __IOfflineFilesItem_FWD_DEFINED__
typedef interface IOfflineFilesItem IOfflineFilesItem;

#endif 	/* __IOfflineFilesItem_FWD_DEFINED__ */


#ifndef __IOfflineFilesServerItem_FWD_DEFINED__
#define __IOfflineFilesServerItem_FWD_DEFINED__
typedef interface IOfflineFilesServerItem IOfflineFilesServerItem;

#endif 	/* __IOfflineFilesServerItem_FWD_DEFINED__ */


#ifndef __IOfflineFilesShareItem_FWD_DEFINED__
#define __IOfflineFilesShareItem_FWD_DEFINED__
typedef interface IOfflineFilesShareItem IOfflineFilesShareItem;

#endif 	/* __IOfflineFilesShareItem_FWD_DEFINED__ */


#ifndef __IOfflineFilesDirectoryItem_FWD_DEFINED__
#define __IOfflineFilesDirectoryItem_FWD_DEFINED__
typedef interface IOfflineFilesDirectoryItem IOfflineFilesDirectoryItem;

#endif 	/* __IOfflineFilesDirectoryItem_FWD_DEFINED__ */


#ifndef __IOfflineFilesFileItem_FWD_DEFINED__
#define __IOfflineFilesFileItem_FWD_DEFINED__
typedef interface IOfflineFilesFileItem IOfflineFilesFileItem;

#endif 	/* __IOfflineFilesFileItem_FWD_DEFINED__ */


#ifndef __IEnumOfflineFilesItems_FWD_DEFINED__
#define __IEnumOfflineFilesItems_FWD_DEFINED__
typedef interface IEnumOfflineFilesItems IEnumOfflineFilesItems;

#endif 	/* __IEnumOfflineFilesItems_FWD_DEFINED__ */


#ifndef __IOfflineFilesItemContainer_FWD_DEFINED__
#define __IOfflineFilesItemContainer_FWD_DEFINED__
typedef interface IOfflineFilesItemContainer IOfflineFilesItemContainer;

#endif 	/* __IOfflineFilesItemContainer_FWD_DEFINED__ */


#ifndef __IOfflineFilesChangeInfo_FWD_DEFINED__
#define __IOfflineFilesChangeInfo_FWD_DEFINED__
typedef interface IOfflineFilesChangeInfo IOfflineFilesChangeInfo;

#endif 	/* __IOfflineFilesChangeInfo_FWD_DEFINED__ */


#ifndef __IOfflineFilesDirtyInfo_FWD_DEFINED__
#define __IOfflineFilesDirtyInfo_FWD_DEFINED__
typedef interface IOfflineFilesDirtyInfo IOfflineFilesDirtyInfo;

#endif 	/* __IOfflineFilesDirtyInfo_FWD_DEFINED__ */


#ifndef __IOfflineFilesFileSysInfo_FWD_DEFINED__
#define __IOfflineFilesFileSysInfo_FWD_DEFINED__
typedef interface IOfflineFilesFileSysInfo IOfflineFilesFileSysInfo;

#endif 	/* __IOfflineFilesFileSysInfo_FWD_DEFINED__ */


#ifndef __IOfflineFilesPinInfo_FWD_DEFINED__
#define __IOfflineFilesPinInfo_FWD_DEFINED__
typedef interface IOfflineFilesPinInfo IOfflineFilesPinInfo;

#endif 	/* __IOfflineFilesPinInfo_FWD_DEFINED__ */


#ifndef __IOfflineFilesPinInfo2_FWD_DEFINED__
#define __IOfflineFilesPinInfo2_FWD_DEFINED__
typedef interface IOfflineFilesPinInfo2 IOfflineFilesPinInfo2;

#endif 	/* __IOfflineFilesPinInfo2_FWD_DEFINED__ */


#ifndef __IOfflineFilesTransparentCacheInfo_FWD_DEFINED__
#define __IOfflineFilesTransparentCacheInfo_FWD_DEFINED__
typedef interface IOfflineFilesTransparentCacheInfo IOfflineFilesTransparentCacheInfo;

#endif 	/* __IOfflineFilesTransparentCacheInfo_FWD_DEFINED__ */


#ifndef __IOfflineFilesGhostInfo_FWD_DEFINED__
#define __IOfflineFilesGhostInfo_FWD_DEFINED__
typedef interface IOfflineFilesGhostInfo IOfflineFilesGhostInfo;

#endif 	/* __IOfflineFilesGhostInfo_FWD_DEFINED__ */


#ifndef __IOfflineFilesConnectionInfo_FWD_DEFINED__
#define __IOfflineFilesConnectionInfo_FWD_DEFINED__
typedef interface IOfflineFilesConnectionInfo IOfflineFilesConnectionInfo;

#endif 	/* __IOfflineFilesConnectionInfo_FWD_DEFINED__ */


#ifndef __IOfflineFilesShareInfo_FWD_DEFINED__
#define __IOfflineFilesShareInfo_FWD_DEFINED__
typedef interface IOfflineFilesShareInfo IOfflineFilesShareInfo;

#endif 	/* __IOfflineFilesShareInfo_FWD_DEFINED__ */


#ifndef __IOfflineFilesSuspend_FWD_DEFINED__
#define __IOfflineFilesSuspend_FWD_DEFINED__
typedef interface IOfflineFilesSuspend IOfflineFilesSuspend;

#endif 	/* __IOfflineFilesSuspend_FWD_DEFINED__ */


#ifndef __IOfflineFilesSuspendInfo_FWD_DEFINED__
#define __IOfflineFilesSuspendInfo_FWD_DEFINED__
typedef interface IOfflineFilesSuspendInfo IOfflineFilesSuspendInfo;

#endif 	/* __IOfflineFilesSuspendInfo_FWD_DEFINED__ */


#ifndef __IOfflineFilesSetting_FWD_DEFINED__
#define __IOfflineFilesSetting_FWD_DEFINED__
typedef interface IOfflineFilesSetting IOfflineFilesSetting;

#endif 	/* __IOfflineFilesSetting_FWD_DEFINED__ */


#ifndef __IEnumOfflineFilesSettings_FWD_DEFINED__
#define __IEnumOfflineFilesSettings_FWD_DEFINED__
typedef interface IEnumOfflineFilesSettings IEnumOfflineFilesSettings;

#endif 	/* __IEnumOfflineFilesSettings_FWD_DEFINED__ */


#ifndef __IOfflineFilesCache_FWD_DEFINED__
#define __IOfflineFilesCache_FWD_DEFINED__
typedef interface IOfflineFilesCache IOfflineFilesCache;

#endif 	/* __IOfflineFilesCache_FWD_DEFINED__ */


#ifndef __IOfflineFilesCache2_FWD_DEFINED__
#define __IOfflineFilesCache2_FWD_DEFINED__
typedef interface IOfflineFilesCache2 IOfflineFilesCache2;

#endif 	/* __IOfflineFilesCache2_FWD_DEFINED__ */


#ifndef __OfflineFilesSetting_FWD_DEFINED__
#define __OfflineFilesSetting_FWD_DEFINED__

#ifdef __cplusplus
typedef class OfflineFilesSetting OfflineFilesSetting;
#else
typedef struct OfflineFilesSetting OfflineFilesSetting;
#endif /* __cplusplus */

#endif 	/* __OfflineFilesSetting_FWD_DEFINED__ */


#ifndef __OfflineFilesCache_FWD_DEFINED__
#define __OfflineFilesCache_FWD_DEFINED__

#ifdef __cplusplus
typedef class OfflineFilesCache OfflineFilesCache;
#else
typedef struct OfflineFilesCache OfflineFilesCache;
#endif /* __cplusplus */

#endif 	/* __OfflineFilesCache_FWD_DEFINED__ */


/* header files for imported files */
#include "oleidl.h"
#include "oaidl.h"
#include "ocidl.h"

#ifdef __cplusplus
extern "C"{
#endif 


/* interface __MIDL_itf_cscobj_0000_0000 */
/* [local] */ 

//+-------------------------------------------------------------------------
//
//  Microsoft Windows
//  Copyright Microsoft Corporation. All Rights Reserved.
//
//--------------------------------------------------------------------------
//
#include <winapifamily.h>
#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
typedef 
enum tagOFFLINEFILES_ITEM_TYPE
    {
        OFFLINEFILES_ITEM_TYPE_FILE	= 0,
        OFFLINEFILES_ITEM_TYPE_DIRECTORY	= ( OFFLINEFILES_ITEM_TYPE_FILE + 1 ) ,
        OFFLINEFILES_ITEM_TYPE_SHARE	= ( OFFLINEFILES_ITEM_TYPE_DIRECTORY + 1 ) ,
        OFFLINEFILES_ITEM_TYPE_SERVER	= ( OFFLINEFILES_ITEM_TYPE_SHARE + 1 ) 
    } 	OFFLINEFILES_ITEM_TYPE;

typedef 
enum tagOFFLINEFILES_ITEM_COPY
    {
        OFFLINEFILES_ITEM_COPY_LOCAL	= 0,
        OFFLINEFILES_ITEM_COPY_REMOTE	= ( OFFLINEFILES_ITEM_COPY_LOCAL + 1 ) ,
        OFFLINEFILES_ITEM_COPY_ORIGINAL	= ( OFFLINEFILES_ITEM_COPY_REMOTE + 1 ) 
    } 	OFFLINEFILES_ITEM_COPY;

typedef 
enum tagOFFLINEFILES_CONNECT_STATE
    {
        OFFLINEFILES_CONNECT_STATE_UNKNOWN	= 0,
        OFFLINEFILES_CONNECT_STATE_OFFLINE	= ( OFFLINEFILES_CONNECT_STATE_UNKNOWN + 1 ) ,
        OFFLINEFILES_CONNECT_STATE_ONLINE	= ( OFFLINEFILES_CONNECT_STATE_OFFLINE + 1 ) ,
        OFFLINEFILES_CONNECT_STATE_TRANSPARENTLY_CACHED	= ( OFFLINEFILES_CONNECT_STATE_ONLINE + 1 ) ,
        OFFLINEFILES_CONNECT_STATE_PARTLY_TRANSPARENTLY_CACHED	= ( OFFLINEFILES_CONNECT_STATE_TRANSPARENTLY_CACHED + 1 ) 
    } 	OFFLINEFILES_CONNECT_STATE;

typedef 
enum tagOFFLINEFILES_OFFLINE_REASON
    {
        OFFLINEFILES_OFFLINE_REASON_UNKNOWN	= 0,
        OFFLINEFILES_OFFLINE_REASON_NOT_APPLICABLE	= ( OFFLINEFILES_OFFLINE_REASON_UNKNOWN + 1 ) ,
        OFFLINEFILES_OFFLINE_REASON_CONNECTION_FORCED	= ( OFFLINEFILES_OFFLINE_REASON_NOT_APPLICABLE + 1 ) ,
        OFFLINEFILES_OFFLINE_REASON_CONNECTION_SLOW	= ( OFFLINEFILES_OFFLINE_REASON_CONNECTION_FORCED + 1 ) ,
        OFFLINEFILES_OFFLINE_REASON_CONNECTION_ERROR	= ( OFFLINEFILES_OFFLINE_REASON_CONNECTION_SLOW + 1 ) ,
        OFFLINEFILES_OFFLINE_REASON_ITEM_VERSION_CONFLICT	= ( OFFLINEFILES_OFFLINE_REASON_CONNECTION_ERROR + 1 ) ,
        OFFLINEFILES_OFFLINE_REASON_ITEM_SUSPENDED	= ( OFFLINEFILES_OFFLINE_REASON_ITEM_VERSION_CONFLICT + 1 ) 
    } 	OFFLINEFILES_OFFLINE_REASON;

typedef 
enum tagOFFLINEFILES_CACHING_MODE
    {
        OFFLINEFILES_CACHING_MODE_NONE	= 0,
        OFFLINEFILES_CACHING_MODE_NOCACHING	= ( OFFLINEFILES_CACHING_MODE_NONE + 1 ) ,
        OFFLINEFILES_CACHING_MODE_MANUAL	= ( OFFLINEFILES_CACHING_MODE_NOCACHING + 1 ) ,
        OFFLINEFILES_CACHING_MODE_AUTO_DOC	= ( OFFLINEFILES_CACHING_MODE_MANUAL + 1 ) ,
        OFFLINEFILES_CACHING_MODE_AUTO_PROGANDDOC	= ( OFFLINEFILES_CACHING_MODE_AUTO_DOC + 1 ) 
    } 	OFFLINEFILES_CACHING_MODE;

typedef 
enum tagOFFLINEFILES_OP_RESPONSE
    {
        OFFLINEFILES_OP_CONTINUE	= 0,
        OFFLINEFILES_OP_RETRY	= ( OFFLINEFILES_OP_CONTINUE + 1 ) ,
        OFFLINEFILES_OP_ABORT	= ( OFFLINEFILES_OP_RETRY + 1 ) 
    } 	OFFLINEFILES_OP_RESPONSE;

typedef 
enum tagOFFLINEFILES_EVENTS
    {
        OFFLINEFILES_EVENT_CACHEMOVED	= 0,
        OFFLINEFILES_EVENT_CACHEISFULL	= ( OFFLINEFILES_EVENT_CACHEMOVED + 1 ) ,
        OFFLINEFILES_EVENT_CACHEISCORRUPTED	= ( OFFLINEFILES_EVENT_CACHEISFULL + 1 ) ,
        OFFLINEFILES_EVENT_ENABLED	= ( OFFLINEFILES_EVENT_CACHEISCORRUPTED + 1 ) ,
        OFFLINEFILES_EVENT_ENCRYPTIONCHANGED	= ( OFFLINEFILES_EVENT_ENABLED + 1 ) ,
        OFFLINEFILES_EVENT_SYNCBEGIN	= ( OFFLINEFILES_EVENT_ENCRYPTIONCHANGED + 1 ) ,
        OFFLINEFILES_EVENT_SYNCFILERESULT	= ( OFFLINEFILES_EVENT_SYNCBEGIN + 1 ) ,
        OFFLINEFILES_EVENT_SYNCCONFLICTRECADDED	= ( OFFLINEFILES_EVENT_SYNCFILERESULT + 1 ) ,
        OFFLINEFILES_EVENT_SYNCCONFLICTRECUPDATED	= ( OFFLINEFILES_EVENT_SYNCCONFLICTRECADDED + 1 ) ,
        OFFLINEFILES_EVENT_SYNCCONFLICTRECREMOVED	= ( OFFLINEFILES_EVENT_SYNCCONFLICTRECUPDATED + 1 ) ,
        OFFLINEFILES_EVENT_SYNCEND	= ( OFFLINEFILES_EVENT_SYNCCONFLICTRECREMOVED + 1 ) ,
        OFFLINEFILES_EVENT_BACKGROUNDSYNCBEGIN	= ( OFFLINEFILES_EVENT_SYNCEND + 1 ) ,
        OFFLINEFILES_EVENT_BACKGROUNDSYNCEND	= ( OFFLINEFILES_EVENT_BACKGROUNDSYNCBEGIN + 1 ) ,
        OFFLINEFILES_EVENT_NETTRANSPORTARRIVED	= ( OFFLINEFILES_EVENT_BACKGROUNDSYNCEND + 1 ) ,
        OFFLINEFILES_EVENT_NONETTRANSPORTS	= ( OFFLINEFILES_EVENT_NETTRANSPORTARRIVED + 1 ) ,
        OFFLINEFILES_EVENT_ITEMDISCONNECTED	= ( OFFLINEFILES_EVENT_NONETTRANSPORTS + 1 ) ,
        OFFLINEFILES_EVENT_ITEMRECONNECTED	= ( OFFLINEFILES_EVENT_ITEMDISCONNECTED + 1 ) ,
        OFFLINEFILES_EVENT_ITEMAVAILABLEOFFLINE	= ( OFFLINEFILES_EVENT_ITEMRECONNECTED + 1 ) ,
        OFFLINEFILES_EVENT_ITEMNOTAVAILABLEOFFLINE	= ( OFFLINEFILES_EVENT_ITEMAVAILABLEOFFLINE + 1 ) ,
        OFFLINEFILES_EVENT_ITEMPINNED	= ( OFFLINEFILES_EVENT_ITEMNOTAVAILABLEOFFLINE + 1 ) ,
        OFFLINEFILES_EVENT_ITEMNOTPINNED	= ( OFFLINEFILES_EVENT_ITEMPINNED + 1 ) ,
        OFFLINEFILES_EVENT_ITEMMODIFIED	= ( OFFLINEFILES_EVENT_ITEMNOTPINNED + 1 ) ,
        OFFLINEFILES_EVENT_ITEMADDEDTOCACHE	= ( OFFLINEFILES_EVENT_ITEMMODIFIED + 1 ) ,
        OFFLINEFILES_EVENT_ITEMDELETEDFROMCACHE	= ( OFFLINEFILES_EVENT_ITEMADDEDTOCACHE + 1 ) ,
        OFFLINEFILES_EVENT_ITEMRENAMED	= ( OFFLINEFILES_EVENT_ITEMDELETEDFROMCACHE + 1 ) ,
        OFFLINEFILES_EVENT_DATALOST	= ( OFFLINEFILES_EVENT_ITEMRENAMED + 1 ) ,
        OFFLINEFILES_EVENT_PING	= ( OFFLINEFILES_EVENT_DATALOST + 1 ) ,
        OFFLINEFILES_EVENT_ITEMRECONNECTBEGIN	= ( OFFLINEFILES_EVENT_PING + 1 ) ,
        OFFLINEFILES_EVENT_ITEMRECONNECTEND	= ( OFFLINEFILES_EVENT_ITEMRECONNECTBEGIN + 1 ) ,
        OFFLINEFILES_EVENT_CACHEEVICTBEGIN	= ( OFFLINEFILES_EVENT_ITEMRECONNECTEND + 1 ) ,
        OFFLINEFILES_EVENT_CACHEEVICTEND	= ( OFFLINEFILES_EVENT_CACHEEVICTBEGIN + 1 ) ,
        OFFLINEFILES_EVENT_POLICYCHANGEDETECTED	= ( OFFLINEFILES_EVENT_CACHEEVICTEND + 1 ) ,
        OFFLINEFILES_EVENT_PREFERENCECHANGEDETECTED	= ( OFFLINEFILES_EVENT_POLICYCHANGEDETECTED + 1 ) ,
        OFFLINEFILES_EVENT_SETTINGSCHANGESAPPLIED	= ( OFFLINEFILES_EVENT_PREFERENCECHANGEDETECTED + 1 ) ,
        OFFLINEFILES_EVENT_TRANSPARENTCACHEITEMNOTIFY	= ( OFFLINEFILES_EVENT_SETTINGSCHANGESAPPLIED + 1 ) ,
        OFFLINEFILES_EVENT_PREFETCHFILEBEGIN	= ( OFFLINEFILES_EVENT_TRANSPARENTCACHEITEMNOTIFY + 1 ) ,
        OFFLINEFILES_EVENT_PREFETCHFILEEND	= ( OFFLINEFILES_EVENT_PREFETCHFILEBEGIN + 1 ) ,
        OFFLINEFILES_EVENT_PREFETCHCLOSEHANDLEBEGIN	= ( OFFLINEFILES_EVENT_PREFETCHFILEEND + 1 ) ,
        OFFLINEFILES_EVENT_PREFETCHCLOSEHANDLEEND	= ( OFFLINEFILES_EVENT_PREFETCHCLOSEHANDLEBEGIN + 1 ) ,
        OFFLINEFILES_NUM_EVENTS	= ( OFFLINEFILES_EVENT_PREFETCHCLOSEHANDLEEND + 1 ) 
    } 	OFFLINEFILES_EVENTS;

typedef 
enum tagOFFLINEFILES_PATHFILTER_MATCH
    {
        OFFLINEFILES_PATHFILTER_SELF	= 0,
        OFFLINEFILES_PATHFILTER_CHILD	= ( OFFLINEFILES_PATHFILTER_SELF + 1 ) ,
        OFFLINEFILES_PATHFILTER_DESCENDENT	= ( OFFLINEFILES_PATHFILTER_CHILD + 1 ) ,
        OFFLINEFILES_PATHFILTER_SELFORCHILD	= ( OFFLINEFILES_PATHFILTER_DESCENDENT + 1 ) ,
        OFFLINEFILES_PATHFILTER_SELFORDESCENDENT	= ( OFFLINEFILES_PATHFILTER_SELFORCHILD + 1 ) 
    } 	OFFLINEFILES_PATHFILTER_MATCH;

#define	OFFLINEFILES_SYNC_STATE_LOCAL_KNOWN	( 0x1 )

#define	OFFLINEFILES_SYNC_STATE_REMOTE_KNOWN	( 0x2 )

#define	OFFLINEFILES_CHANGES_NONE	( 0 )

#define	OFFLINEFILES_CHANGES_LOCAL_SIZE	( 0x1 )

#define	OFFLINEFILES_CHANGES_LOCAL_ATTRIBUTES	( 0x2 )

#define	OFFLINEFILES_CHANGES_LOCAL_TIME	( 0x4 )

#define	OFFLINEFILES_CHANGES_REMOTE_SIZE	( 0x8 )

#define	OFFLINEFILES_CHANGES_REMOTE_ATTRIBUTES	( 0x10 )

#define	OFFLINEFILES_CHANGES_REMOTE_TIME	( 0x20 )

typedef 
enum tagOFFLINEFILES_SYNC_CONFLICT_RESOLVE
    {
        OFFLINEFILES_SYNC_CONFLICT_RESOLVE_NONE	= 0,
        OFFLINEFILES_SYNC_CONFLICT_RESOLVE_KEEPLOCAL	= ( OFFLINEFILES_SYNC_CONFLICT_RESOLVE_NONE + 1 ) ,
        OFFLINEFILES_SYNC_CONFLICT_RESOLVE_KEEPREMOTE	= ( OFFLINEFILES_SYNC_CONFLICT_RESOLVE_KEEPLOCAL + 1 ) ,
        OFFLINEFILES_SYNC_CONFLICT_RESOLVE_KEEPALLCHANGES	= ( OFFLINEFILES_SYNC_CONFLICT_RESOLVE_KEEPREMOTE + 1 ) ,
        OFFLINEFILES_SYNC_CONFLICT_RESOLVE_KEEPLATEST	= ( OFFLINEFILES_SYNC_CONFLICT_RESOLVE_KEEPALLCHANGES + 1 ) ,
        OFFLINEFILES_SYNC_CONFLICT_RESOLVE_LOG	= ( OFFLINEFILES_SYNC_CONFLICT_RESOLVE_KEEPLATEST + 1 ) ,
        OFFLINEFILES_SYNC_CONFLICT_RESOLVE_SKIP	= ( OFFLINEFILES_SYNC_CONFLICT_RESOLVE_LOG + 1 ) ,
        OFFLINEFILES_SYNC_CONFLICT_ABORT	= ( OFFLINEFILES_SYNC_CONFLICT_RESOLVE_SKIP + 1 ) ,
        OFFLINEFILES_SYNC_CONFLICT_RESOLVE_NUMCODES	= ( OFFLINEFILES_SYNC_CONFLICT_ABORT + 1 ) 
    } 	OFFLINEFILES_SYNC_CONFLICT_RESOLVE;

#define OFFLINEFILES_SYNC_CONFLICT_RESOLVE_LATER OFFLINEFILES_SYNC_CONFLICT_RESOLVE_LOG
#define	OFFLINEFILES_ITEM_FILTER_FLAG_MODIFIED_DATA	( 0x1 )

#define	OFFLINEFILES_ITEM_FILTER_FLAG_MODIFIED_ATTRIBUTES	( 0x2 )

#define	OFFLINEFILES_ITEM_FILTER_FLAG_MODIFIED	( 0x4 )

#define	OFFLINEFILES_ITEM_FILTER_FLAG_CREATED	( 0x8 )

#define	OFFLINEFILES_ITEM_FILTER_FLAG_DELETED	( 0x10 )

#define	OFFLINEFILES_ITEM_FILTER_FLAG_DIRTY	( 0x20 )

#define	OFFLINEFILES_ITEM_FILTER_FLAG_SPARSE	( 0x40 )

#define	OFFLINEFILES_ITEM_FILTER_FLAG_FILE	( 0x80 )

#define	OFFLINEFILES_ITEM_FILTER_FLAG_DIRECTORY	( 0x100 )

#define	OFFLINEFILES_ITEM_FILTER_FLAG_PINNED_USER	( 0x200 )

#define	OFFLINEFILES_ITEM_FILTER_FLAG_PINNED_OTHERS	( 0x400 )

#define	OFFLINEFILES_ITEM_FILTER_FLAG_PINNED_COMPUTER	( 0x800 )

#define	OFFLINEFILES_ITEM_FILTER_FLAG_PINNED	( 0x1000 )

#define	OFFLINEFILES_ITEM_FILTER_FLAG_GHOST	( 0x2000 )

#define	OFFLINEFILES_ITEM_FILTER_FLAG_SUSPENDED	( 0x4000 )

#define	OFFLINEFILES_ITEM_FILTER_FLAG_OFFLINE	( 0x8000 )

#define	OFFLINEFILES_ITEM_FILTER_FLAG_ONLINE	( 0x10000 )

#define	OFFLINEFILES_ITEM_FILTER_FLAG_USER_WRITE	( 0x20000 )

#define	OFFLINEFILES_ITEM_FILTER_FLAG_USER_READ	( 0x40000 )

#define	OFFLINEFILES_ITEM_FILTER_FLAG_USER_ANYACCESS	( 0x80000 )

#define	OFFLINEFILES_ITEM_FILTER_FLAG_OTHER_WRITE	( 0x100000 )

#define	OFFLINEFILES_ITEM_FILTER_FLAG_OTHER_READ	( 0x200000 )

#define	OFFLINEFILES_ITEM_FILTER_FLAG_OTHER_ANYACCESS	( 0x400000 )

#define	OFFLINEFILES_ITEM_FILTER_FLAG_GUEST_WRITE	( 0x800000 )

#define	OFFLINEFILES_ITEM_FILTER_FLAG_GUEST_READ	( 0x1000000 )

#define	OFFLINEFILES_ITEM_FILTER_FLAG_GUEST_ANYACCESS	( 0x2000000 )

#define	OFFLINEFILES_ITEM_FILTER_FLAGS	( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( OFFLINEFILES_ITEM_FILTER_FLAG_MODIFIED_DATA | OFFLINEFILES_ITEM_FILTER_FLAG_MODIFIED_ATTRIBUTES )  | OFFLINEFILES_ITEM_FILTER_FLAG_MODIFIED )  | OFFLINEFILES_ITEM_FILTER_FLAG_CREATED )  | OFFLINEFILES_ITEM_FILTER_FLAG_DELETED )  | OFFLINEFILES_ITEM_FILTER_FLAG_DIRTY )  | OFFLINEFILES_ITEM_FILTER_FLAG_SPARSE )  | OFFLINEFILES_ITEM_FILTER_FLAG_FILE )  | OFFLINEFILES_ITEM_FILTER_FLAG_DIRECTORY )  | OFFLINEFILES_ITEM_FILTER_FLAG_PINNED_USER )  | OFFLINEFILES_ITEM_FILTER_FLAG_PINNED_OTHERS )  | OFFLINEFILES_ITEM_FILTER_FLAG_PINNED_COMPUTER )  | OFFLINEFILES_ITEM_FILTER_FLAG_PINNED )  | OFFLINEFILES_ITEM_FILTER_FLAG_GHOST )  | OFFLINEFILES_ITEM_FILTER_FLAG_SUSPENDED )  | OFFLINEFILES_ITEM_FILTER_FLAG_OFFLINE )  | OFFLINEFILES_ITEM_FILTER_FLAG_ONLINE )  | OFFLINEFILES_ITEM_FILTER_FLAG_USER_WRITE )  | OFFLINEFILES_ITEM_FILTER_FLAG_USER_READ )  | OFFLINEFILES_ITEM_FILTER_FLAG_USER_ANYACCESS )  | OFFLINEFILES_ITEM_FILTER_FLAG_OTHER_WRITE )  | OFFLINEFILES_ITEM_FILTER_FLAG_OTHER_READ )  | OFFLINEFILES_ITEM_FILTER_FLAG_OTHER_ANYACCESS )  | OFFLINEFILES_ITEM_FILTER_FLAG_GUEST_WRITE )  | OFFLINEFILES_ITEM_FILTER_FLAG_GUEST_READ )  | OFFLINEFILES_ITEM_FILTER_FLAG_GUEST_ANYACCESS )  )

typedef 
enum tagOFFLINEFILES_ITEM_TIME
    {
        OFFLINEFILES_ITEM_TIME_CREATION	= 0,
        OFFLINEFILES_ITEM_TIME_LASTACCESS	= ( OFFLINEFILES_ITEM_TIME_CREATION + 1 ) ,
        OFFLINEFILES_ITEM_TIME_LASTWRITE	= ( OFFLINEFILES_ITEM_TIME_LASTACCESS + 1 ) 
    } 	OFFLINEFILES_ITEM_TIME;

typedef 
enum tagOFFLINEFILES_COMPARE
    {
        OFFLINEFILES_COMPARE_EQ	= 0,
        OFFLINEFILES_COMPARE_NEQ	= ( OFFLINEFILES_COMPARE_EQ + 1 ) ,
        OFFLINEFILES_COMPARE_LT	= ( OFFLINEFILES_COMPARE_NEQ + 1 ) ,
        OFFLINEFILES_COMPARE_GT	= ( OFFLINEFILES_COMPARE_LT + 1 ) ,
        OFFLINEFILES_COMPARE_LTE	= ( OFFLINEFILES_COMPARE_GT + 1 ) ,
        OFFLINEFILES_COMPARE_GTE	= ( OFFLINEFILES_COMPARE_LTE + 1 ) 
    } 	OFFLINEFILES_COMPARE;

#define	OFFLINEFILES_ITEM_QUERY_REMOTEINFO	( 0x1 )

#define	OFFLINEFILES_ITEM_QUERY_CONNECTIONSTATE	( 0x2 )

#define	OFFLINEFILES_ITEM_QUERY_LOCALDIRTYBYTECOUNT	( 0x4 )

#define	OFFLINEFILES_ITEM_QUERY_REMOTEDIRTYBYTECOUNT	( 0x8 )

#define	OFFLINEFILES_ITEM_QUERY_INCLUDETRANSPARENTCACHE	( 0x10 )

#define	OFFLINEFILES_ITEM_QUERY_ATTEMPT_TRANSITIONONLINE	( 0x20 )

#define	OFFLINEFILES_ITEM_QUERY_ADMIN	( 0x80000000 )

#define	OFFLINEFILES_ITEM_QUERY_FLAGS	( ( ( ( ( ( ( OFFLINEFILES_ITEM_QUERY_REMOTEINFO | OFFLINEFILES_ITEM_QUERY_CONNECTIONSTATE )  | OFFLINEFILES_ITEM_QUERY_ADMIN )  | OFFLINEFILES_ITEM_QUERY_LOCALDIRTYBYTECOUNT )  | OFFLINEFILES_ITEM_QUERY_REMOTEDIRTYBYTECOUNT )  | OFFLINEFILES_ITEM_QUERY_INCLUDETRANSPARENTCACHE )  | OFFLINEFILES_ITEM_QUERY_ATTEMPT_TRANSITIONONLINE )  )

#define	OFFLINEFILES_ENUM_FLAT	( 0x1 )

#define	OFFLINEFILES_ENUM_FLAT_FILESONLY	( 0x2 )

#define	OFFLINEFILES_ENUM_FLAGS	( ( OFFLINEFILES_ENUM_FLAT | OFFLINEFILES_ENUM_FLAT_FILESONLY )  )

#define	OFFLINEFILES_SETTING_SCOPE_USER	( 0x1 )

#define	OFFLINEFILES_SETTING_SCOPE_COMPUTER	( 0x2 )

typedef 
enum tagOFFLINEFILES_SETTING_VALUE_TYPE
    {
        OFFLINEFILES_SETTING_VALUE_UI4	= 0,
        OFFLINEFILES_SETTING_VALUE_BSTR	= ( OFFLINEFILES_SETTING_VALUE_UI4 + 1 ) ,
        OFFLINEFILES_SETTING_VALUE_BSTR_DBLNULTERM	= ( OFFLINEFILES_SETTING_VALUE_BSTR + 1 ) ,
        OFFLINEFILES_SETTING_VALUE_2DIM_ARRAY_BSTR_UI4	= ( OFFLINEFILES_SETTING_VALUE_BSTR_DBLNULTERM + 1 ) ,
        OFFLINEFILES_SETTING_VALUE_2DIM_ARRAY_BSTR_BSTR	= ( OFFLINEFILES_SETTING_VALUE_2DIM_ARRAY_BSTR_UI4 + 1 ) 
    } 	OFFLINEFILES_SETTING_VALUE_TYPE;

#define OFFLINEFILES_SETTING_PinLinkTargets   L"LinkTargetCaching"
#define	OFFLINEFILES_PINLINKTARGETS_NEVER	( 0 )

#define	OFFLINEFILES_PINLINKTARGETS_EXPLICIT	( 1 )

#define	OFFLINEFILES_PINLINKTARGETS_ALWAYS	( 2 )

#define	OFFLINEFILES_SYNC_CONTROL_FLAG_FILLSPARSE	( 0x1 )

#define	OFFLINEFILES_SYNC_CONTROL_FLAG_SYNCIN	( 0x2 )

#define	OFFLINEFILES_SYNC_CONTROL_FLAG_SYNCOUT	( 0x4 )

#define	OFFLINEFILES_SYNC_CONTROL_FLAG_PINNEWFILES	( 0x8 )

#define	OFFLINEFILES_SYNC_CONTROL_FLAG_PINLINKTARGETS	( 0x10 )

#define	OFFLINEFILES_SYNC_CONTROL_FLAG_PINFORUSER	( 0x20 )

#define	OFFLINEFILES_SYNC_CONTROL_FLAG_PINFORUSER_POLICY	( 0x40 )

#define	OFFLINEFILES_SYNC_CONTROL_FLAG_PINFORALL	( 0x80 )

#define	OFFLINEFILES_SYNC_CONTROL_FLAG_PINFORREDIR	( 0x100 )

#define	OFFLINEFILES_SYNC_CONTROL_FLAG_LOWPRIORITY	( 0x200 )

#define	OFFLINEFILES_SYNC_CONTROL_FLAG_ASYNCPROGRESS	( 0x400 )

#define	OFFLINEFILES_SYNC_CONTROL_FLAG_INTERACTIVE	( 0x800 )

#define	OFFLINEFILES_SYNC_CONTROL_FLAG_CONSOLE	( 0x1000 )

#define	OFFLINEFILES_SYNC_CONTROL_FLAG_SKIPSUSPENDEDDIRS	( 0x2000 )

#define	OFFLINEFILES_SYNC_CONTROL_FLAG_BACKGROUND	( 0x10000 )

#define	OFFLINEFILES_SYNC_CONTROL_FLAG_NONEWFILESOUT	( 0x20000 )

#define	OFFLINEFILES_SYNC_CONTROL_CR_MASK	( 0xf0000000 )

#define	OFFLINEFILES_SYNC_CONTROL_CR_DEFAULT	( 0 )

#define	OFFLINEFILES_SYNC_CONTROL_CR_KEEPLOCAL	( 0x10000000 )

#define	OFFLINEFILES_SYNC_CONTROL_CR_KEEPREMOTE	( 0x20000000 )

#define	OFFLINEFILES_SYNC_CONTROL_CR_KEEPLATEST	( 0x30000000 )

#define	OFFLINEFILES_SYNC_CONTROL_FLAGS	( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( OFFLINEFILES_SYNC_CONTROL_FLAG_FILLSPARSE | OFFLINEFILES_SYNC_CONTROL_FLAG_SYNCIN )  | OFFLINEFILES_SYNC_CONTROL_FLAG_SYNCOUT )  | OFFLINEFILES_SYNC_CONTROL_FLAG_PINNEWFILES )  | OFFLINEFILES_SYNC_CONTROL_FLAG_PINLINKTARGETS )  | OFFLINEFILES_SYNC_CONTROL_FLAG_PINFORUSER )  | OFFLINEFILES_SYNC_CONTROL_FLAG_PINFORUSER_POLICY )  | OFFLINEFILES_SYNC_CONTROL_FLAG_PINFORALL )  | OFFLINEFILES_SYNC_CONTROL_FLAG_PINFORREDIR )  | OFFLINEFILES_SYNC_CONTROL_FLAG_LOWPRIORITY )  | OFFLINEFILES_SYNC_CONTROL_FLAG_ASYNCPROGRESS )  | OFFLINEFILES_SYNC_CONTROL_FLAG_INTERACTIVE )  | OFFLINEFILES_SYNC_CONTROL_FLAG_CONSOLE )  | OFFLINEFILES_SYNC_CONTROL_FLAG_SKIPSUSPENDEDDIRS )  | OFFLINEFILES_SYNC_CONTROL_FLAG_BACKGROUND )  | OFFLINEFILES_SYNC_CONTROL_FLAG_NONEWFILESOUT )  | OFFLINEFILES_SYNC_CONTROL_CR_KEEPLOCAL )  | OFFLINEFILES_SYNC_CONTROL_CR_KEEPREMOTE )  | OFFLINEFILES_SYNC_CONTROL_CR_KEEPLATEST )  )

#define	OFFLINEFILES_PIN_CONTROL_FLAG_FORUSER	( OFFLINEFILES_SYNC_CONTROL_FLAG_PINFORUSER )

#define	OFFLINEFILES_PIN_CONTROL_FLAG_FORUSER_POLICY	( OFFLINEFILES_SYNC_CONTROL_FLAG_PINFORUSER_POLICY )

#define	OFFLINEFILES_PIN_CONTROL_FLAG_FORALL	( OFFLINEFILES_SYNC_CONTROL_FLAG_PINFORALL )

#define	OFFLINEFILES_PIN_CONTROL_FLAG_FORREDIR	( OFFLINEFILES_SYNC_CONTROL_FLAG_PINFORREDIR )

#define	OFFLINEFILES_PIN_CONTROL_FLAG_FILL	( OFFLINEFILES_SYNC_CONTROL_FLAG_FILLSPARSE )

#define	OFFLINEFILES_PIN_CONTROL_FLAG_LOWPRIORITY	( OFFLINEFILES_SYNC_CONTROL_FLAG_LOWPRIORITY )

#define	OFFLINEFILES_PIN_CONTROL_FLAG_ASYNCPROGRESS	( OFFLINEFILES_SYNC_CONTROL_FLAG_ASYNCPROGRESS )

#define	OFFLINEFILES_PIN_CONTROL_FLAG_INTERACTIVE	( OFFLINEFILES_SYNC_CONTROL_FLAG_INTERACTIVE )

#define	OFFLINEFILES_PIN_CONTROL_FLAG_CONSOLE	( OFFLINEFILES_SYNC_CONTROL_FLAG_CONSOLE )

#define	OFFLINEFILES_PIN_CONTROL_FLAG_PINLINKTARGETS	( OFFLINEFILES_SYNC_CONTROL_FLAG_PINLINKTARGETS )

#define	OFFLINEFILES_PIN_CONTROL_FLAG_BACKGROUND	( OFFLINEFILES_SYNC_CONTROL_FLAG_BACKGROUND )

#define	OFFLINEFILES_PIN_CONTROL_FLAGS	( ( ( ( ( ( ( ( ( ( ( OFFLINEFILES_PIN_CONTROL_FLAG_FORUSER | OFFLINEFILES_PIN_CONTROL_FLAG_FORUSER_POLICY )  | OFFLINEFILES_PIN_CONTROL_FLAG_FORALL )  | OFFLINEFILES_PIN_CONTROL_FLAG_FORREDIR )  | OFFLINEFILES_PIN_CONTROL_FLAG_FILL )  | OFFLINEFILES_PIN_CONTROL_FLAG_LOWPRIORITY )  | OFFLINEFILES_PIN_CONTROL_FLAG_ASYNCPROGRESS )  | OFFLINEFILES_PIN_CONTROL_FLAG_INTERACTIVE )  | OFFLINEFILES_PIN_CONTROL_FLAG_CONSOLE )  | OFFLINEFILES_PIN_CONTROL_FLAG_PINLINKTARGETS )  | OFFLINEFILES_PIN_CONTROL_FLAG_BACKGROUND )  )

#define	OFFLINEFILES_ENCRYPTION_CONTROL_FLAG_LOWPRIORITY	( OFFLINEFILES_SYNC_CONTROL_FLAG_LOWPRIORITY )

#define	OFFLINEFILES_ENCRYPTION_CONTROL_FLAG_ASYNCPROGRESS	( OFFLINEFILES_SYNC_CONTROL_FLAG_ASYNCPROGRESS )

#define	OFFLINEFILES_ENCRYPTION_CONTROL_FLAG_INTERACTIVE	( OFFLINEFILES_SYNC_CONTROL_FLAG_INTERACTIVE )

#define	OFFLINEFILES_ENCRYPTION_CONTROL_FLAG_CONSOLE	( OFFLINEFILES_SYNC_CONTROL_FLAG_CONSOLE )

#define	OFFLINEFILES_ENCRYPTION_CONTROL_FLAG_BACKGROUND	( OFFLINEFILES_SYNC_CONTROL_FLAG_BACKGROUND )

#define	OFFLINEFILES_ENCRYPTION_CONTROL_FLAGS	( ( ( ( ( OFFLINEFILES_ENCRYPTION_CONTROL_FLAG_LOWPRIORITY | OFFLINEFILES_ENCRYPTION_CONTROL_FLAG_ASYNCPROGRESS )  | OFFLINEFILES_ENCRYPTION_CONTROL_FLAG_INTERACTIVE )  | OFFLINEFILES_ENCRYPTION_CONTROL_FLAG_CONSOLE )  | OFFLINEFILES_ENCRYPTION_CONTROL_FLAG_BACKGROUND )  )

#define	OFFLINEFILES_DELETE_FLAG_NOAUTOCACHED	( 0x1 )

#define	OFFLINEFILES_DELETE_FLAG_NOPINNED	( 0x2 )

#define	OFFLINEFILES_DELETE_FLAG_DELMODIFIED	( 0x4 )

#define	OFFLINEFILES_DELETE_FLAG_ADMIN	( 0x80000000 )

#define	OFFLINEFILES_DELETE_FLAGS	( ( ( ( OFFLINEFILES_DELETE_FLAG_NOAUTOCACHED | OFFLINEFILES_DELETE_FLAG_NOPINNED )  | OFFLINEFILES_DELETE_FLAG_DELMODIFIED )  | OFFLINEFILES_DELETE_FLAG_ADMIN )  )

#define	OFFLINEFILES_TRANSITION_FLAG_INTERACTIVE	( 0x1 )

#define	OFFLINEFILES_TRANSITION_FLAG_CONSOLE	( 0x2 )

#define	OFFLINEFILES_TRANSITION_FLAGS	( ( OFFLINEFILES_TRANSITION_FLAG_INTERACTIVE | OFFLINEFILES_TRANSITION_FLAG_CONSOLE )  )

typedef 
enum tagOFFLINEFILES_SYNC_OPERATION
    {
        OFFLINEFILES_SYNC_OPERATION_CREATE_COPY_ON_SERVER	= 0,
        OFFLINEFILES_SYNC_OPERATION_CREATE_COPY_ON_CLIENT	= ( OFFLINEFILES_SYNC_OPERATION_CREATE_COPY_ON_SERVER + 1 ) ,
        OFFLINEFILES_SYNC_OPERATION_SYNC_TO_SERVER	= ( OFFLINEFILES_SYNC_OPERATION_CREATE_COPY_ON_CLIENT + 1 ) ,
        OFFLINEFILES_SYNC_OPERATION_SYNC_TO_CLIENT	= ( OFFLINEFILES_SYNC_OPERATION_SYNC_TO_SERVER + 1 ) ,
        OFFLINEFILES_SYNC_OPERATION_DELETE_SERVER_COPY	= ( OFFLINEFILES_SYNC_OPERATION_SYNC_TO_CLIENT + 1 ) ,
        OFFLINEFILES_SYNC_OPERATION_DELETE_CLIENT_COPY	= ( OFFLINEFILES_SYNC_OPERATION_DELETE_SERVER_COPY + 1 ) ,
        OFFLINEFILES_SYNC_OPERATION_PIN	= ( OFFLINEFILES_SYNC_OPERATION_DELETE_CLIENT_COPY + 1 ) ,
        OFFLINEFILES_SYNC_OPERATION_PREPARE	= ( OFFLINEFILES_SYNC_OPERATION_PIN + 1 ) 
    } 	OFFLINEFILES_SYNC_OPERATION;

#define	OFFLINEFILES_SYNC_ITEM_CHANGE_NONE	( 0 )

#define	OFFLINEFILES_SYNC_ITEM_CHANGE_CHANGETIME	( 0x1 )

#define	OFFLINEFILES_SYNC_ITEM_CHANGE_WRITETIME	( 0x2 )

#define	OFFLINEFILES_SYNC_ITEM_CHANGE_FILESIZE	( 0x4 )

#define	OFFLINEFILES_SYNC_ITEM_CHANGE_ATTRIBUTES	( 0x8 )

typedef 
enum tagOFFLINEFILES_SYNC_STATE
    {
        OFFLINEFILES_SYNC_STATE_Stable	= 0,
        OFFLINEFILES_SYNC_STATE_FileOnClient_DirOnServer	= ( OFFLINEFILES_SYNC_STATE_Stable + 1 ) ,
        OFFLINEFILES_SYNC_STATE_FileOnClient_NoServerCopy	= ( OFFLINEFILES_SYNC_STATE_FileOnClient_DirOnServer + 1 ) ,
        OFFLINEFILES_SYNC_STATE_DirOnClient_FileOnServer	= ( OFFLINEFILES_SYNC_STATE_FileOnClient_NoServerCopy + 1 ) ,
        OFFLINEFILES_SYNC_STATE_DirOnClient_FileChangedOnServer	= ( OFFLINEFILES_SYNC_STATE_DirOnClient_FileOnServer + 1 ) ,
        OFFLINEFILES_SYNC_STATE_DirOnClient_NoServerCopy	= ( OFFLINEFILES_SYNC_STATE_DirOnClient_FileChangedOnServer + 1 ) ,
        OFFLINEFILES_SYNC_STATE_FileCreatedOnClient_NoServerCopy	= ( OFFLINEFILES_SYNC_STATE_DirOnClient_NoServerCopy + 1 ) ,
        OFFLINEFILES_SYNC_STATE_FileCreatedOnClient_FileChangedOnServer	= ( OFFLINEFILES_SYNC_STATE_FileCreatedOnClient_NoServerCopy + 1 ) ,
        OFFLINEFILES_SYNC_STATE_FileCreatedOnClient_DirChangedOnServer	= ( OFFLINEFILES_SYNC_STATE_FileCreatedOnClient_FileChangedOnServer + 1 ) ,
        OFFLINEFILES_SYNC_STATE_FileCreatedOnClient_FileOnServer	= ( OFFLINEFILES_SYNC_STATE_FileCreatedOnClient_DirChangedOnServer + 1 ) ,
        OFFLINEFILES_SYNC_STATE_FileCreatedOnClient_DirOnServer	= ( OFFLINEFILES_SYNC_STATE_FileCreatedOnClient_FileOnServer + 1 ) ,
        OFFLINEFILES_SYNC_STATE_FileCreatedOnClient_DeletedOnServer	= ( OFFLINEFILES_SYNC_STATE_FileCreatedOnClient_DirOnServer + 1 ) ,
        OFFLINEFILES_SYNC_STATE_FileChangedOnClient_ChangedOnServer	= ( OFFLINEFILES_SYNC_STATE_FileCreatedOnClient_DeletedOnServer + 1 ) ,
        OFFLINEFILES_SYNC_STATE_FileChangedOnClient_DirOnServer	= ( OFFLINEFILES_SYNC_STATE_FileChangedOnClient_ChangedOnServer + 1 ) ,
        OFFLINEFILES_SYNC_STATE_FileChangedOnClient_DirChangedOnServer	= ( OFFLINEFILES_SYNC_STATE_FileChangedOnClient_DirOnServer + 1 ) ,
        OFFLINEFILES_SYNC_STATE_FileChangedOnClient_DeletedOnServer	= ( OFFLINEFILES_SYNC_STATE_FileChangedOnClient_DirChangedOnServer + 1 ) ,
        OFFLINEFILES_SYNC_STATE_FileSparseOnClient_ChangedOnServer	= ( OFFLINEFILES_SYNC_STATE_FileChangedOnClient_DeletedOnServer + 1 ) ,
        OFFLINEFILES_SYNC_STATE_FileSparseOnClient_DeletedOnServer	= ( OFFLINEFILES_SYNC_STATE_FileSparseOnClient_ChangedOnServer + 1 ) ,
        OFFLINEFILES_SYNC_STATE_FileSparseOnClient_DirOnServer	= ( OFFLINEFILES_SYNC_STATE_FileSparseOnClient_DeletedOnServer + 1 ) ,
        OFFLINEFILES_SYNC_STATE_FileSparseOnClient_DirChangedOnServer	= ( OFFLINEFILES_SYNC_STATE_FileSparseOnClient_DirOnServer + 1 ) ,
        OFFLINEFILES_SYNC_STATE_DirCreatedOnClient_NoServerCopy	= ( OFFLINEFILES_SYNC_STATE_FileSparseOnClient_DirChangedOnServer + 1 ) ,
        OFFLINEFILES_SYNC_STATE_DirCreatedOnClient_DirOnServer	= ( OFFLINEFILES_SYNC_STATE_DirCreatedOnClient_NoServerCopy + 1 ) ,
        OFFLINEFILES_SYNC_STATE_DirCreatedOnClient_FileOnServer	= ( OFFLINEFILES_SYNC_STATE_DirCreatedOnClient_DirOnServer + 1 ) ,
        OFFLINEFILES_SYNC_STATE_DirCreatedOnClient_FileChangedOnServer	= ( OFFLINEFILES_SYNC_STATE_DirCreatedOnClient_FileOnServer + 1 ) ,
        OFFLINEFILES_SYNC_STATE_DirCreatedOnClient_DirChangedOnServer	= ( OFFLINEFILES_SYNC_STATE_DirCreatedOnClient_FileChangedOnServer + 1 ) ,
        OFFLINEFILES_SYNC_STATE_DirCreatedOnClient_DeletedOnServer	= ( OFFLINEFILES_SYNC_STATE_DirCreatedOnClient_DirChangedOnServer + 1 ) ,
        OFFLINEFILES_SYNC_STATE_DirChangedOnClient_FileOnServer	= ( OFFLINEFILES_SYNC_STATE_DirCreatedOnClient_DeletedOnServer + 1 ) ,
        OFFLINEFILES_SYNC_STATE_DirChangedOnClient_FileChangedOnServer	= ( OFFLINEFILES_SYNC_STATE_DirChangedOnClient_FileOnServer + 1 ) ,
        OFFLINEFILES_SYNC_STATE_DirChangedOnClient_ChangedOnServer	= ( OFFLINEFILES_SYNC_STATE_DirChangedOnClient_FileChangedOnServer + 1 ) ,
        OFFLINEFILES_SYNC_STATE_DirChangedOnClient_DeletedOnServer	= ( OFFLINEFILES_SYNC_STATE_DirChangedOnClient_ChangedOnServer + 1 ) ,
        OFFLINEFILES_SYNC_STATE_NoClientCopy_FileOnServer	= ( OFFLINEFILES_SYNC_STATE_DirChangedOnClient_DeletedOnServer + 1 ) ,
        OFFLINEFILES_SYNC_STATE_NoClientCopy_DirOnServer	= ( OFFLINEFILES_SYNC_STATE_NoClientCopy_FileOnServer + 1 ) ,
        OFFLINEFILES_SYNC_STATE_NoClientCopy_FileChangedOnServer	= ( OFFLINEFILES_SYNC_STATE_NoClientCopy_DirOnServer + 1 ) ,
        OFFLINEFILES_SYNC_STATE_NoClientCopy_DirChangedOnServer	= ( OFFLINEFILES_SYNC_STATE_NoClientCopy_FileChangedOnServer + 1 ) ,
        OFFLINEFILES_SYNC_STATE_DeletedOnClient_FileOnServer	= ( OFFLINEFILES_SYNC_STATE_NoClientCopy_DirChangedOnServer + 1 ) ,
        OFFLINEFILES_SYNC_STATE_DeletedOnClient_DirOnServer	= ( OFFLINEFILES_SYNC_STATE_DeletedOnClient_FileOnServer + 1 ) ,
        OFFLINEFILES_SYNC_STATE_DeletedOnClient_FileChangedOnServer	= ( OFFLINEFILES_SYNC_STATE_DeletedOnClient_DirOnServer + 1 ) ,
        OFFLINEFILES_SYNC_STATE_DeletedOnClient_DirChangedOnServer	= ( OFFLINEFILES_SYNC_STATE_DeletedOnClient_FileChangedOnServer + 1 ) ,
        OFFLINEFILES_SYNC_STATE_FileSparseOnClient	= ( OFFLINEFILES_SYNC_STATE_DeletedOnClient_DirChangedOnServer + 1 ) ,
        OFFLINEFILES_SYNC_STATE_FileChangedOnClient	= ( OFFLINEFILES_SYNC_STATE_FileSparseOnClient + 1 ) ,
        OFFLINEFILES_SYNC_STATE_FileRenamedOnClient	= ( OFFLINEFILES_SYNC_STATE_FileChangedOnClient + 1 ) ,
        OFFLINEFILES_SYNC_STATE_DirSparseOnClient	= ( OFFLINEFILES_SYNC_STATE_FileRenamedOnClient + 1 ) ,
        OFFLINEFILES_SYNC_STATE_DirChangedOnClient	= ( OFFLINEFILES_SYNC_STATE_DirSparseOnClient + 1 ) ,
        OFFLINEFILES_SYNC_STATE_DirRenamedOnClient	= ( OFFLINEFILES_SYNC_STATE_DirChangedOnClient + 1 ) ,
        OFFLINEFILES_SYNC_STATE_FileChangedOnServer	= ( OFFLINEFILES_SYNC_STATE_DirRenamedOnClient + 1 ) ,
        OFFLINEFILES_SYNC_STATE_FileRenamedOnServer	= ( OFFLINEFILES_SYNC_STATE_FileChangedOnServer + 1 ) ,
        OFFLINEFILES_SYNC_STATE_FileDeletedOnServer	= ( OFFLINEFILES_SYNC_STATE_FileRenamedOnServer + 1 ) ,
        OFFLINEFILES_SYNC_STATE_DirChangedOnServer	= ( OFFLINEFILES_SYNC_STATE_FileDeletedOnServer + 1 ) ,
        OFFLINEFILES_SYNC_STATE_DirRenamedOnServer	= ( OFFLINEFILES_SYNC_STATE_DirChangedOnServer + 1 ) ,
        OFFLINEFILES_SYNC_STATE_DirDeletedOnServer	= ( OFFLINEFILES_SYNC_STATE_DirRenamedOnServer + 1 ) ,
        OFFLINEFILES_SYNC_STATE_FileReplacedAndDeletedOnClient_FileOnServer	= ( OFFLINEFILES_SYNC_STATE_DirDeletedOnServer + 1 ) ,
        OFFLINEFILES_SYNC_STATE_FileReplacedAndDeletedOnClient_FileChangedOnServer	= ( OFFLINEFILES_SYNC_STATE_FileReplacedAndDeletedOnClient_FileOnServer + 1 ) ,
        OFFLINEFILES_SYNC_STATE_FileReplacedAndDeletedOnClient_DirOnServer	= ( OFFLINEFILES_SYNC_STATE_FileReplacedAndDeletedOnClient_FileChangedOnServer + 1 ) ,
        OFFLINEFILES_SYNC_STATE_FileReplacedAndDeletedOnClient_DirChangedOnServer	= ( OFFLINEFILES_SYNC_STATE_FileReplacedAndDeletedOnClient_DirOnServer + 1 ) ,
        OFFLINEFILES_SYNC_STATE_NUMSTATES	= ( OFFLINEFILES_SYNC_STATE_FileReplacedAndDeletedOnClient_DirChangedOnServer + 1 ) 
    } 	OFFLINEFILES_SYNC_STATE;



extern RPC_IF_HANDLE __MIDL_itf_cscobj_0000_0000_v0_0_c_ifspec;
extern RPC_IF_HANDLE __MIDL_itf_cscobj_0000_0000_v0_0_s_ifspec;

#ifndef __IOfflineFilesEvents_INTERFACE_DEFINED__
#define __IOfflineFilesEvents_INTERFACE_DEFINED__

/* interface IOfflineFilesEvents */
/* [helpstring][uuid][object] */ 


EXTERN_C const IID IID_IOfflineFilesEvents;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("E25585C1-0CAA-4eb1-873B-1CAE5B77C314")
    IOfflineFilesEvents : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE CacheMoved( 
            /* [string][in] */ __RPC__in_string LPCWSTR pszOldPath,
            /* [string][in] */ __RPC__in_string LPCWSTR pszNewPath) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE CacheIsFull( void) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE CacheIsCorrupted( void) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE Enabled( 
            /* [in] */ BOOL bEnabled) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE EncryptionChanged( 
            /* [in] */ BOOL bWasEncrypted,
            /* [in] */ BOOL bWasPartial,
            /* [in] */ BOOL bIsEncrypted,
            /* [in] */ BOOL bIsPartial) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE SyncBegin( 
            /* [in] */ __RPC__in REFGUID rSyncId) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE SyncFileResult( 
            /* [in] */ __RPC__in REFGUID rSyncId,
            /* [string][in] */ __RPC__in_string LPCWSTR pszFile,
            /* [in] */ HRESULT hrResult) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE SyncConflictRecAdded( 
            /* [string][in] */ __RPC__in_string LPCWSTR pszConflictPath,
            /* [in] */ __RPC__in const FILETIME *pftConflictDateTime,
            /* [in] */ OFFLINEFILES_SYNC_STATE ConflictSyncState) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE SyncConflictRecUpdated( 
            /* [string][in] */ __RPC__in_string LPCWSTR pszConflictPath,
            /* [in] */ __RPC__in const FILETIME *pftConflictDateTime,
            /* [in] */ OFFLINEFILES_SYNC_STATE ConflictSyncState) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE SyncConflictRecRemoved( 
            /* [string][in] */ __RPC__in_string LPCWSTR pszConflictPath,
            /* [in] */ __RPC__in const FILETIME *pftConflictDateTime,
            /* [in] */ OFFLINEFILES_SYNC_STATE ConflictSyncState) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE SyncEnd( 
            /* [in] */ __RPC__in REFGUID rSyncId,
            /* [in] */ HRESULT hrResult) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE NetTransportArrived( void) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE NoNetTransports( void) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE ItemDisconnected( 
            /* [string][in] */ __RPC__in_string LPCWSTR pszPath,
            /* [in] */ OFFLINEFILES_ITEM_TYPE ItemType) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE ItemReconnected( 
            /* [string][in] */ __RPC__in_string LPCWSTR pszPath,
            /* [in] */ OFFLINEFILES_ITEM_TYPE ItemType) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE ItemAvailableOffline( 
            /* [string][in] */ __RPC__in_string LPCWSTR pszPath,
            /* [in] */ OFFLINEFILES_ITEM_TYPE ItemType) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE ItemNotAvailableOffline( 
            /* [string][in] */ __RPC__in_string LPCWSTR pszPath,
            /* [in] */ OFFLINEFILES_ITEM_TYPE ItemType) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE ItemPinned( 
            /* [string][in] */ __RPC__in_string LPCWSTR pszPath,
            /* [in] */ OFFLINEFILES_ITEM_TYPE ItemType) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE ItemNotPinned( 
            /* [string][in] */ __RPC__in_string LPCWSTR pszPath,
            /* [in] */ OFFLINEFILES_ITEM_TYPE ItemType) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE ItemModified( 
            /* [string][in] */ __RPC__in_string LPCWSTR pszPath,
            /* [in] */ OFFLINEFILES_ITEM_TYPE ItemType,
            /* [in] */ BOOL bModifiedData,
            /* [in] */ BOOL bModifiedAttributes) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE ItemAddedToCache( 
            /* [string][in] */ __RPC__in_string LPCWSTR pszPath,
            /* [in] */ OFFLINEFILES_ITEM_TYPE ItemType) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE ItemDeletedFromCache( 
            /* [string][in] */ __RPC__in_string LPCWSTR pszPath,
            /* [in] */ OFFLINEFILES_ITEM_TYPE ItemType) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE ItemRenamed( 
            /* [string][in] */ __RPC__in_string LPCWSTR pszOldPath,
            /* [string][in] */ __RPC__in_string LPCWSTR pszNewPath,
            /* [in] */ OFFLINEFILES_ITEM_TYPE ItemType) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE DataLost( void) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE Ping( void) = 0;
        
    };
    
    
#else 	/* C style interface */

    typedef struct IOfflineFilesEventsVtbl
    {
        BEGIN_INTERFACE
        
        DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            __RPC__in IOfflineFilesEvents * This,
            /* [in] */ __RPC__in REFIID riid,
            /* [annotation][iid_is][out] */ 
            _COM_Outptr_  void **ppvObject);
        
        DECLSPEC_XFGVIRT(IUnknown, AddRef)
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            __RPC__in IOfflineFilesEvents * This);
        
        DECLSPEC_XFGVIRT(IUnknown, Release)
        ULONG ( STDMETHODCALLTYPE *Release )( 
            __RPC__in IOfflineFilesEvents * This);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents, CacheMoved)
        HRESULT ( STDMETHODCALLTYPE *CacheMoved )( 
            __RPC__in IOfflineFilesEvents * This,
            /* [string][in] */ __RPC__in_string LPCWSTR pszOldPath,
            /* [string][in] */ __RPC__in_string LPCWSTR pszNewPath);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents, CacheIsFull)
        HRESULT ( STDMETHODCALLTYPE *CacheIsFull )( 
            __RPC__in IOfflineFilesEvents * This);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents, CacheIsCorrupted)
        HRESULT ( STDMETHODCALLTYPE *CacheIsCorrupted )( 
            __RPC__in IOfflineFilesEvents * This);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents, Enabled)
        HRESULT ( STDMETHODCALLTYPE *Enabled )( 
            __RPC__in IOfflineFilesEvents * This,
            /* [in] */ BOOL bEnabled);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents, EncryptionChanged)
        HRESULT ( STDMETHODCALLTYPE *EncryptionChanged )( 
            __RPC__in IOfflineFilesEvents * This,
            /* [in] */ BOOL bWasEncrypted,
            /* [in] */ BOOL bWasPartial,
            /* [in] */ BOOL bIsEncrypted,
            /* [in] */ BOOL bIsPartial);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents, SyncBegin)
        HRESULT ( STDMETHODCALLTYPE *SyncBegin )( 
            __RPC__in IOfflineFilesEvents * This,
            /* [in] */ __RPC__in REFGUID rSyncId);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents, SyncFileResult)
        HRESULT ( STDMETHODCALLTYPE *SyncFileResult )( 
            __RPC__in IOfflineFilesEvents * This,
            /* [in] */ __RPC__in REFGUID rSyncId,
            /* [string][in] */ __RPC__in_string LPCWSTR pszFile,
            /* [in] */ HRESULT hrResult);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents, SyncConflictRecAdded)
        HRESULT ( STDMETHODCALLTYPE *SyncConflictRecAdded )( 
            __RPC__in IOfflineFilesEvents * This,
            /* [string][in] */ __RPC__in_string LPCWSTR pszConflictPath,
            /* [in] */ __RPC__in const FILETIME *pftConflictDateTime,
            /* [in] */ OFFLINEFILES_SYNC_STATE ConflictSyncState);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents, SyncConflictRecUpdated)
        HRESULT ( STDMETHODCALLTYPE *SyncConflictRecUpdated )( 
            __RPC__in IOfflineFilesEvents * This,
            /* [string][in] */ __RPC__in_string LPCWSTR pszConflictPath,
            /* [in] */ __RPC__in const FILETIME *pftConflictDateTime,
            /* [in] */ OFFLINEFILES_SYNC_STATE ConflictSyncState);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents, SyncConflictRecRemoved)
        HRESULT ( STDMETHODCALLTYPE *SyncConflictRecRemoved )( 
            __RPC__in IOfflineFilesEvents * This,
            /* [string][in] */ __RPC__in_string LPCWSTR pszConflictPath,
            /* [in] */ __RPC__in const FILETIME *pftConflictDateTime,
            /* [in] */ OFFLINEFILES_SYNC_STATE ConflictSyncState);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents, SyncEnd)
        HRESULT ( STDMETHODCALLTYPE *SyncEnd )( 
            __RPC__in IOfflineFilesEvents * This,
            /* [in] */ __RPC__in REFGUID rSyncId,
            /* [in] */ HRESULT hrResult);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents, NetTransportArrived)
        HRESULT ( STDMETHODCALLTYPE *NetTransportArrived )( 
            __RPC__in IOfflineFilesEvents * This);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents, NoNetTransports)
        HRESULT ( STDMETHODCALLTYPE *NoNetTransports )( 
            __RPC__in IOfflineFilesEvents * This);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents, ItemDisconnected)
        HRESULT ( STDMETHODCALLTYPE *ItemDisconnected )( 
            __RPC__in IOfflineFilesEvents * This,
            /* [string][in] */ __RPC__in_string LPCWSTR pszPath,
            /* [in] */ OFFLINEFILES_ITEM_TYPE ItemType);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents, ItemReconnected)
        HRESULT ( STDMETHODCALLTYPE *ItemReconnected )( 
            __RPC__in IOfflineFilesEvents * This,
            /* [string][in] */ __RPC__in_string LPCWSTR pszPath,
            /* [in] */ OFFLINEFILES_ITEM_TYPE ItemType);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents, ItemAvailableOffline)
        HRESULT ( STDMETHODCALLTYPE *ItemAvailableOffline )( 
            __RPC__in IOfflineFilesEvents * This,
            /* [string][in] */ __RPC__in_string LPCWSTR pszPath,
            /* [in] */ OFFLINEFILES_ITEM_TYPE ItemType);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents, ItemNotAvailableOffline)
        HRESULT ( STDMETHODCALLTYPE *ItemNotAvailableOffline )( 
            __RPC__in IOfflineFilesEvents * This,
            /* [string][in] */ __RPC__in_string LPCWSTR pszPath,
            /* [in] */ OFFLINEFILES_ITEM_TYPE ItemType);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents, ItemPinned)
        HRESULT ( STDMETHODCALLTYPE *ItemPinned )( 
            __RPC__in IOfflineFilesEvents * This,
            /* [string][in] */ __RPC__in_string LPCWSTR pszPath,
            /* [in] */ OFFLINEFILES_ITEM_TYPE ItemType);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents, ItemNotPinned)
        HRESULT ( STDMETHODCALLTYPE *ItemNotPinned )( 
            __RPC__in IOfflineFilesEvents * This,
            /* [string][in] */ __RPC__in_string LPCWSTR pszPath,
            /* [in] */ OFFLINEFILES_ITEM_TYPE ItemType);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents, ItemModified)
        HRESULT ( STDMETHODCALLTYPE *ItemModified )( 
            __RPC__in IOfflineFilesEvents * This,
            /* [string][in] */ __RPC__in_string LPCWSTR pszPath,
            /* [in] */ OFFLINEFILES_ITEM_TYPE ItemType,
            /* [in] */ BOOL bModifiedData,
            /* [in] */ BOOL bModifiedAttributes);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents, ItemAddedToCache)
        HRESULT ( STDMETHODCALLTYPE *ItemAddedToCache )( 
            __RPC__in IOfflineFilesEvents * This,
            /* [string][in] */ __RPC__in_string LPCWSTR pszPath,
            /* [in] */ OFFLINEFILES_ITEM_TYPE ItemType);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents, ItemDeletedFromCache)
        HRESULT ( STDMETHODCALLTYPE *ItemDeletedFromCache )( 
            __RPC__in IOfflineFilesEvents * This,
            /* [string][in] */ __RPC__in_string LPCWSTR pszPath,
            /* [in] */ OFFLINEFILES_ITEM_TYPE ItemType);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents, ItemRenamed)
        HRESULT ( STDMETHODCALLTYPE *ItemRenamed )( 
            __RPC__in IOfflineFilesEvents * This,
            /* [string][in] */ __RPC__in_string LPCWSTR pszOldPath,
            /* [string][in] */ __RPC__in_string LPCWSTR pszNewPath,
            /* [in] */ OFFLINEFILES_ITEM_TYPE ItemType);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents, DataLost)
        HRESULT ( STDMETHODCALLTYPE *DataLost )( 
            __RPC__in IOfflineFilesEvents * This);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents, Ping)
        HRESULT ( STDMETHODCALLTYPE *Ping )( 
            __RPC__in IOfflineFilesEvents * This);
        
        END_INTERFACE
    } IOfflineFilesEventsVtbl;

    interface IOfflineFilesEvents
    {
        CONST_VTBL struct IOfflineFilesEventsVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IOfflineFilesEvents_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IOfflineFilesEvents_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IOfflineFilesEvents_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IOfflineFilesEvents_CacheMoved(This,pszOldPath,pszNewPath)	\
    ( (This)->lpVtbl -> CacheMoved(This,pszOldPath,pszNewPath) ) 

#define IOfflineFilesEvents_CacheIsFull(This)	\
    ( (This)->lpVtbl -> CacheIsFull(This) ) 

#define IOfflineFilesEvents_CacheIsCorrupted(This)	\
    ( (This)->lpVtbl -> CacheIsCorrupted(This) ) 

#define IOfflineFilesEvents_Enabled(This,bEnabled)	\
    ( (This)->lpVtbl -> Enabled(This,bEnabled) ) 

#define IOfflineFilesEvents_EncryptionChanged(This,bWasEncrypted,bWasPartial,bIsEncrypted,bIsPartial)	\
    ( (This)->lpVtbl -> EncryptionChanged(This,bWasEncrypted,bWasPartial,bIsEncrypted,bIsPartial) ) 

#define IOfflineFilesEvents_SyncBegin(This,rSyncId)	\
    ( (This)->lpVtbl -> SyncBegin(This,rSyncId) ) 

#define IOfflineFilesEvents_SyncFileResult(This,rSyncId,pszFile,hrResult)	\
    ( (This)->lpVtbl -> SyncFileResult(This,rSyncId,pszFile,hrResult) ) 

#define IOfflineFilesEvents_SyncConflictRecAdded(This,pszConflictPath,pftConflictDateTime,ConflictSyncState)	\
    ( (This)->lpVtbl -> SyncConflictRecAdded(This,pszConflictPath,pftConflictDateTime,ConflictSyncState) ) 

#define IOfflineFilesEvents_SyncConflictRecUpdated(This,pszConflictPath,pftConflictDateTime,ConflictSyncState)	\
    ( (This)->lpVtbl -> SyncConflictRecUpdated(This,pszConflictPath,pftConflictDateTime,ConflictSyncState) ) 

#define IOfflineFilesEvents_SyncConflictRecRemoved(This,pszConflictPath,pftConflictDateTime,ConflictSyncState)	\
    ( (This)->lpVtbl -> SyncConflictRecRemoved(This,pszConflictPath,pftConflictDateTime,ConflictSyncState) ) 

#define IOfflineFilesEvents_SyncEnd(This,rSyncId,hrResult)	\
    ( (This)->lpVtbl -> SyncEnd(This,rSyncId,hrResult) ) 

#define IOfflineFilesEvents_NetTransportArrived(This)	\
    ( (This)->lpVtbl -> NetTransportArrived(This) ) 

#define IOfflineFilesEvents_NoNetTransports(This)	\
    ( (This)->lpVtbl -> NoNetTransports(This) ) 

#define IOfflineFilesEvents_ItemDisconnected(This,pszPath,ItemType)	\
    ( (This)->lpVtbl -> ItemDisconnected(This,pszPath,ItemType) ) 

#define IOfflineFilesEvents_ItemReconnected(This,pszPath,ItemType)	\
    ( (This)->lpVtbl -> ItemReconnected(This,pszPath,ItemType) ) 

#define IOfflineFilesEvents_ItemAvailableOffline(This,pszPath,ItemType)	\
    ( (This)->lpVtbl -> ItemAvailableOffline(This,pszPath,ItemType) ) 

#define IOfflineFilesEvents_ItemNotAvailableOffline(This,pszPath,ItemType)	\
    ( (This)->lpVtbl -> ItemNotAvailableOffline(This,pszPath,ItemType) ) 

#define IOfflineFilesEvents_ItemPinned(This,pszPath,ItemType)	\
    ( (This)->lpVtbl -> ItemPinned(This,pszPath,ItemType) ) 

#define IOfflineFilesEvents_ItemNotPinned(This,pszPath,ItemType)	\
    ( (This)->lpVtbl -> ItemNotPinned(This,pszPath,ItemType) ) 

#define IOfflineFilesEvents_ItemModified(This,pszPath,ItemType,bModifiedData,bModifiedAttributes)	\
    ( (This)->lpVtbl -> ItemModified(This,pszPath,ItemType,bModifiedData,bModifiedAttributes) ) 

#define IOfflineFilesEvents_ItemAddedToCache(This,pszPath,ItemType)	\
    ( (This)->lpVtbl -> ItemAddedToCache(This,pszPath,ItemType) ) 

#define IOfflineFilesEvents_ItemDeletedFromCache(This,pszPath,ItemType)	\
    ( (This)->lpVtbl -> ItemDeletedFromCache(This,pszPath,ItemType) ) 

#define IOfflineFilesEvents_ItemRenamed(This,pszOldPath,pszNewPath,ItemType)	\
    ( (This)->lpVtbl -> ItemRenamed(This,pszOldPath,pszNewPath,ItemType) ) 

#define IOfflineFilesEvents_DataLost(This)	\
    ( (This)->lpVtbl -> DataLost(This) ) 

#define IOfflineFilesEvents_Ping(This)	\
    ( (This)->lpVtbl -> Ping(This) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __IOfflineFilesEvents_INTERFACE_DEFINED__ */


#ifndef __IOfflineFilesEvents2_INTERFACE_DEFINED__
#define __IOfflineFilesEvents2_INTERFACE_DEFINED__

/* interface IOfflineFilesEvents2 */
/* [helpstring][uuid][object] */ 


EXTERN_C const IID IID_IOfflineFilesEvents2;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("1EAD8F56-FF76-4faa-A795-6F6EF792498B")
    IOfflineFilesEvents2 : public IOfflineFilesEvents
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE ItemReconnectBegin( void) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE ItemReconnectEnd( void) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE CacheEvictBegin( void) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE CacheEvictEnd( void) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE BackgroundSyncBegin( 
            /* [in] */ DWORD dwSyncControlFlags) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE BackgroundSyncEnd( 
            /* [in] */ DWORD dwSyncControlFlags) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE PolicyChangeDetected( void) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE PreferenceChangeDetected( void) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE SettingsChangesApplied( void) = 0;
        
    };
    
    
#else 	/* C style interface */

    typedef struct IOfflineFilesEvents2Vtbl
    {
        BEGIN_INTERFACE
        
        DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            __RPC__in IOfflineFilesEvents2 * This,
            /* [in] */ __RPC__in REFIID riid,
            /* [annotation][iid_is][out] */ 
            _COM_Outptr_  void **ppvObject);
        
        DECLSPEC_XFGVIRT(IUnknown, AddRef)
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            __RPC__in IOfflineFilesEvents2 * This);
        
        DECLSPEC_XFGVIRT(IUnknown, Release)
        ULONG ( STDMETHODCALLTYPE *Release )( 
            __RPC__in IOfflineFilesEvents2 * This);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents, CacheMoved)
        HRESULT ( STDMETHODCALLTYPE *CacheMoved )( 
            __RPC__in IOfflineFilesEvents2 * This,
            /* [string][in] */ __RPC__in_string LPCWSTR pszOldPath,
            /* [string][in] */ __RPC__in_string LPCWSTR pszNewPath);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents, CacheIsFull)
        HRESULT ( STDMETHODCALLTYPE *CacheIsFull )( 
            __RPC__in IOfflineFilesEvents2 * This);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents, CacheIsCorrupted)
        HRESULT ( STDMETHODCALLTYPE *CacheIsCorrupted )( 
            __RPC__in IOfflineFilesEvents2 * This);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents, Enabled)
        HRESULT ( STDMETHODCALLTYPE *Enabled )( 
            __RPC__in IOfflineFilesEvents2 * This,
            /* [in] */ BOOL bEnabled);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents, EncryptionChanged)
        HRESULT ( STDMETHODCALLTYPE *EncryptionChanged )( 
            __RPC__in IOfflineFilesEvents2 * This,
            /* [in] */ BOOL bWasEncrypted,
            /* [in] */ BOOL bWasPartial,
            /* [in] */ BOOL bIsEncrypted,
            /* [in] */ BOOL bIsPartial);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents, SyncBegin)
        HRESULT ( STDMETHODCALLTYPE *SyncBegin )( 
            __RPC__in IOfflineFilesEvents2 * This,
            /* [in] */ __RPC__in REFGUID rSyncId);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents, SyncFileResult)
        HRESULT ( STDMETHODCALLTYPE *SyncFileResult )( 
            __RPC__in IOfflineFilesEvents2 * This,
            /* [in] */ __RPC__in REFGUID rSyncId,
            /* [string][in] */ __RPC__in_string LPCWSTR pszFile,
            /* [in] */ HRESULT hrResult);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents, SyncConflictRecAdded)
        HRESULT ( STDMETHODCALLTYPE *SyncConflictRecAdded )( 
            __RPC__in IOfflineFilesEvents2 * This,
            /* [string][in] */ __RPC__in_string LPCWSTR pszConflictPath,
            /* [in] */ __RPC__in const FILETIME *pftConflictDateTime,
            /* [in] */ OFFLINEFILES_SYNC_STATE ConflictSyncState);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents, SyncConflictRecUpdated)
        HRESULT ( STDMETHODCALLTYPE *SyncConflictRecUpdated )( 
            __RPC__in IOfflineFilesEvents2 * This,
            /* [string][in] */ __RPC__in_string LPCWSTR pszConflictPath,
            /* [in] */ __RPC__in const FILETIME *pftConflictDateTime,
            /* [in] */ OFFLINEFILES_SYNC_STATE ConflictSyncState);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents, SyncConflictRecRemoved)
        HRESULT ( STDMETHODCALLTYPE *SyncConflictRecRemoved )( 
            __RPC__in IOfflineFilesEvents2 * This,
            /* [string][in] */ __RPC__in_string LPCWSTR pszConflictPath,
            /* [in] */ __RPC__in const FILETIME *pftConflictDateTime,
            /* [in] */ OFFLINEFILES_SYNC_STATE ConflictSyncState);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents, SyncEnd)
        HRESULT ( STDMETHODCALLTYPE *SyncEnd )( 
            __RPC__in IOfflineFilesEvents2 * This,
            /* [in] */ __RPC__in REFGUID rSyncId,
            /* [in] */ HRESULT hrResult);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents, NetTransportArrived)
        HRESULT ( STDMETHODCALLTYPE *NetTransportArrived )( 
            __RPC__in IOfflineFilesEvents2 * This);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents, NoNetTransports)
        HRESULT ( STDMETHODCALLTYPE *NoNetTransports )( 
            __RPC__in IOfflineFilesEvents2 * This);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents, ItemDisconnected)
        HRESULT ( STDMETHODCALLTYPE *ItemDisconnected )( 
            __RPC__in IOfflineFilesEvents2 * This,
            /* [string][in] */ __RPC__in_string LPCWSTR pszPath,
            /* [in] */ OFFLINEFILES_ITEM_TYPE ItemType);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents, ItemReconnected)
        HRESULT ( STDMETHODCALLTYPE *ItemReconnected )( 
            __RPC__in IOfflineFilesEvents2 * This,
            /* [string][in] */ __RPC__in_string LPCWSTR pszPath,
            /* [in] */ OFFLINEFILES_ITEM_TYPE ItemType);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents, ItemAvailableOffline)
        HRESULT ( STDMETHODCALLTYPE *ItemAvailableOffline )( 
            __RPC__in IOfflineFilesEvents2 * This,
            /* [string][in] */ __RPC__in_string LPCWSTR pszPath,
            /* [in] */ OFFLINEFILES_ITEM_TYPE ItemType);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents, ItemNotAvailableOffline)
        HRESULT ( STDMETHODCALLTYPE *ItemNotAvailableOffline )( 
            __RPC__in IOfflineFilesEvents2 * This,
            /* [string][in] */ __RPC__in_string LPCWSTR pszPath,
            /* [in] */ OFFLINEFILES_ITEM_TYPE ItemType);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents, ItemPinned)
        HRESULT ( STDMETHODCALLTYPE *ItemPinned )( 
            __RPC__in IOfflineFilesEvents2 * This,
            /* [string][in] */ __RPC__in_string LPCWSTR pszPath,
            /* [in] */ OFFLINEFILES_ITEM_TYPE ItemType);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents, ItemNotPinned)
        HRESULT ( STDMETHODCALLTYPE *ItemNotPinned )( 
            __RPC__in IOfflineFilesEvents2 * This,
            /* [string][in] */ __RPC__in_string LPCWSTR pszPath,
            /* [in] */ OFFLINEFILES_ITEM_TYPE ItemType);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents, ItemModified)
        HRESULT ( STDMETHODCALLTYPE *ItemModified )( 
            __RPC__in IOfflineFilesEvents2 * This,
            /* [string][in] */ __RPC__in_string LPCWSTR pszPath,
            /* [in] */ OFFLINEFILES_ITEM_TYPE ItemType,
            /* [in] */ BOOL bModifiedData,
            /* [in] */ BOOL bModifiedAttributes);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents, ItemAddedToCache)
        HRESULT ( STDMETHODCALLTYPE *ItemAddedToCache )( 
            __RPC__in IOfflineFilesEvents2 * This,
            /* [string][in] */ __RPC__in_string LPCWSTR pszPath,
            /* [in] */ OFFLINEFILES_ITEM_TYPE ItemType);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents, ItemDeletedFromCache)
        HRESULT ( STDMETHODCALLTYPE *ItemDeletedFromCache )( 
            __RPC__in IOfflineFilesEvents2 * This,
            /* [string][in] */ __RPC__in_string LPCWSTR pszPath,
            /* [in] */ OFFLINEFILES_ITEM_TYPE ItemType);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents, ItemRenamed)
        HRESULT ( STDMETHODCALLTYPE *ItemRenamed )( 
            __RPC__in IOfflineFilesEvents2 * This,
            /* [string][in] */ __RPC__in_string LPCWSTR pszOldPath,
            /* [string][in] */ __RPC__in_string LPCWSTR pszNewPath,
            /* [in] */ OFFLINEFILES_ITEM_TYPE ItemType);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents, DataLost)
        HRESULT ( STDMETHODCALLTYPE *DataLost )( 
            __RPC__in IOfflineFilesEvents2 * This);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents, Ping)
        HRESULT ( STDMETHODCALLTYPE *Ping )( 
            __RPC__in IOfflineFilesEvents2 * This);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents2, ItemReconnectBegin)
        HRESULT ( STDMETHODCALLTYPE *ItemReconnectBegin )( 
            __RPC__in IOfflineFilesEvents2 * This);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents2, ItemReconnectEnd)
        HRESULT ( STDMETHODCALLTYPE *ItemReconnectEnd )( 
            __RPC__in IOfflineFilesEvents2 * This);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents2, CacheEvictBegin)
        HRESULT ( STDMETHODCALLTYPE *CacheEvictBegin )( 
            __RPC__in IOfflineFilesEvents2 * This);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents2, CacheEvictEnd)
        HRESULT ( STDMETHODCALLTYPE *CacheEvictEnd )( 
            __RPC__in IOfflineFilesEvents2 * This);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents2, BackgroundSyncBegin)
        HRESULT ( STDMETHODCALLTYPE *BackgroundSyncBegin )( 
            __RPC__in IOfflineFilesEvents2 * This,
            /* [in] */ DWORD dwSyncControlFlags);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents2, BackgroundSyncEnd)
        HRESULT ( STDMETHODCALLTYPE *BackgroundSyncEnd )( 
            __RPC__in IOfflineFilesEvents2 * This,
            /* [in] */ DWORD dwSyncControlFlags);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents2, PolicyChangeDetected)
        HRESULT ( STDMETHODCALLTYPE *PolicyChangeDetected )( 
            __RPC__in IOfflineFilesEvents2 * This);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents2, PreferenceChangeDetected)
        HRESULT ( STDMETHODCALLTYPE *PreferenceChangeDetected )( 
            __RPC__in IOfflineFilesEvents2 * This);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents2, SettingsChangesApplied)
        HRESULT ( STDMETHODCALLTYPE *SettingsChangesApplied )( 
            __RPC__in IOfflineFilesEvents2 * This);
        
        END_INTERFACE
    } IOfflineFilesEvents2Vtbl;

    interface IOfflineFilesEvents2
    {
        CONST_VTBL struct IOfflineFilesEvents2Vtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IOfflineFilesEvents2_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IOfflineFilesEvents2_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IOfflineFilesEvents2_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IOfflineFilesEvents2_CacheMoved(This,pszOldPath,pszNewPath)	\
    ( (This)->lpVtbl -> CacheMoved(This,pszOldPath,pszNewPath) ) 

#define IOfflineFilesEvents2_CacheIsFull(This)	\
    ( (This)->lpVtbl -> CacheIsFull(This) ) 

#define IOfflineFilesEvents2_CacheIsCorrupted(This)	\
    ( (This)->lpVtbl -> CacheIsCorrupted(This) ) 

#define IOfflineFilesEvents2_Enabled(This,bEnabled)	\
    ( (This)->lpVtbl -> Enabled(This,bEnabled) ) 

#define IOfflineFilesEvents2_EncryptionChanged(This,bWasEncrypted,bWasPartial,bIsEncrypted,bIsPartial)	\
    ( (This)->lpVtbl -> EncryptionChanged(This,bWasEncrypted,bWasPartial,bIsEncrypted,bIsPartial) ) 

#define IOfflineFilesEvents2_SyncBegin(This,rSyncId)	\
    ( (This)->lpVtbl -> SyncBegin(This,rSyncId) ) 

#define IOfflineFilesEvents2_SyncFileResult(This,rSyncId,pszFile,hrResult)	\
    ( (This)->lpVtbl -> SyncFileResult(This,rSyncId,pszFile,hrResult) ) 

#define IOfflineFilesEvents2_SyncConflictRecAdded(This,pszConflictPath,pftConflictDateTime,ConflictSyncState)	\
    ( (This)->lpVtbl -> SyncConflictRecAdded(This,pszConflictPath,pftConflictDateTime,ConflictSyncState) ) 

#define IOfflineFilesEvents2_SyncConflictRecUpdated(This,pszConflictPath,pftConflictDateTime,ConflictSyncState)	\
    ( (This)->lpVtbl -> SyncConflictRecUpdated(This,pszConflictPath,pftConflictDateTime,ConflictSyncState) ) 

#define IOfflineFilesEvents2_SyncConflictRecRemoved(This,pszConflictPath,pftConflictDateTime,ConflictSyncState)	\
    ( (This)->lpVtbl -> SyncConflictRecRemoved(This,pszConflictPath,pftConflictDateTime,ConflictSyncState) ) 

#define IOfflineFilesEvents2_SyncEnd(This,rSyncId,hrResult)	\
    ( (This)->lpVtbl -> SyncEnd(This,rSyncId,hrResult) ) 

#define IOfflineFilesEvents2_NetTransportArrived(This)	\
    ( (This)->lpVtbl -> NetTransportArrived(This) ) 

#define IOfflineFilesEvents2_NoNetTransports(This)	\
    ( (This)->lpVtbl -> NoNetTransports(This) ) 

#define IOfflineFilesEvents2_ItemDisconnected(This,pszPath,ItemType)	\
    ( (This)->lpVtbl -> ItemDisconnected(This,pszPath,ItemType) ) 

#define IOfflineFilesEvents2_ItemReconnected(This,pszPath,ItemType)	\
    ( (This)->lpVtbl -> ItemReconnected(This,pszPath,ItemType) ) 

#define IOfflineFilesEvents2_ItemAvailableOffline(This,pszPath,ItemType)	\
    ( (This)->lpVtbl -> ItemAvailableOffline(This,pszPath,ItemType) ) 

#define IOfflineFilesEvents2_ItemNotAvailableOffline(This,pszPath,ItemType)	\
    ( (This)->lpVtbl -> ItemNotAvailableOffline(This,pszPath,ItemType) ) 

#define IOfflineFilesEvents2_ItemPinned(This,pszPath,ItemType)	\
    ( (This)->lpVtbl -> ItemPinned(This,pszPath,ItemType) ) 

#define IOfflineFilesEvents2_ItemNotPinned(This,pszPath,ItemType)	\
    ( (This)->lpVtbl -> ItemNotPinned(This,pszPath,ItemType) ) 

#define IOfflineFilesEvents2_ItemModified(This,pszPath,ItemType,bModifiedData,bModifiedAttributes)	\
    ( (This)->lpVtbl -> ItemModified(This,pszPath,ItemType,bModifiedData,bModifiedAttributes) ) 

#define IOfflineFilesEvents2_ItemAddedToCache(This,pszPath,ItemType)	\
    ( (This)->lpVtbl -> ItemAddedToCache(This,pszPath,ItemType) ) 

#define IOfflineFilesEvents2_ItemDeletedFromCache(This,pszPath,ItemType)	\
    ( (This)->lpVtbl -> ItemDeletedFromCache(This,pszPath,ItemType) ) 

#define IOfflineFilesEvents2_ItemRenamed(This,pszOldPath,pszNewPath,ItemType)	\
    ( (This)->lpVtbl -> ItemRenamed(This,pszOldPath,pszNewPath,ItemType) ) 

#define IOfflineFilesEvents2_DataLost(This)	\
    ( (This)->lpVtbl -> DataLost(This) ) 

#define IOfflineFilesEvents2_Ping(This)	\
    ( (This)->lpVtbl -> Ping(This) ) 


#define IOfflineFilesEvents2_ItemReconnectBegin(This)	\
    ( (This)->lpVtbl -> ItemReconnectBegin(This) ) 

#define IOfflineFilesEvents2_ItemReconnectEnd(This)	\
    ( (This)->lpVtbl -> ItemReconnectEnd(This) ) 

#define IOfflineFilesEvents2_CacheEvictBegin(This)	\
    ( (This)->lpVtbl -> CacheEvictBegin(This) ) 

#define IOfflineFilesEvents2_CacheEvictEnd(This)	\
    ( (This)->lpVtbl -> CacheEvictEnd(This) ) 

#define IOfflineFilesEvents2_BackgroundSyncBegin(This,dwSyncControlFlags)	\
    ( (This)->lpVtbl -> BackgroundSyncBegin(This,dwSyncControlFlags) ) 

#define IOfflineFilesEvents2_BackgroundSyncEnd(This,dwSyncControlFlags)	\
    ( (This)->lpVtbl -> BackgroundSyncEnd(This,dwSyncControlFlags) ) 

#define IOfflineFilesEvents2_PolicyChangeDetected(This)	\
    ( (This)->lpVtbl -> PolicyChangeDetected(This) ) 

#define IOfflineFilesEvents2_PreferenceChangeDetected(This)	\
    ( (This)->lpVtbl -> PreferenceChangeDetected(This) ) 

#define IOfflineFilesEvents2_SettingsChangesApplied(This)	\
    ( (This)->lpVtbl -> SettingsChangesApplied(This) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __IOfflineFilesEvents2_INTERFACE_DEFINED__ */


#ifndef __IOfflineFilesEvents3_INTERFACE_DEFINED__
#define __IOfflineFilesEvents3_INTERFACE_DEFINED__

/* interface IOfflineFilesEvents3 */
/* [helpstring][uuid][object] */ 


EXTERN_C const IID IID_IOfflineFilesEvents3;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("9ba04a45-ee69-42f0-9ab1-7db5c8805808")
    IOfflineFilesEvents3 : public IOfflineFilesEvents2
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE TransparentCacheItemNotify( 
            /* [string][in] */ __RPC__in_string LPCWSTR pszPath,
            /* [in] */ OFFLINEFILES_EVENTS EventType,
            /* [in] */ OFFLINEFILES_ITEM_TYPE ItemType,
            /* [in] */ BOOL bModifiedData,
            /* [in] */ BOOL bModifiedAttributes,
            /* [string][in] */ __RPC__in_string LPCWSTR pzsOldPath) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE PrefetchFileBegin( 
            /* [string][in] */ __RPC__in_string LPCWSTR pszPath) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE PrefetchFileEnd( 
            /* [string][in] */ __RPC__in_string LPCWSTR pszPath,
            /* [in] */ HRESULT hrResult) = 0;
        
    };
    
    
#else 	/* C style interface */

    typedef struct IOfflineFilesEvents3Vtbl
    {
        BEGIN_INTERFACE
        
        DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            __RPC__in IOfflineFilesEvents3 * This,
            /* [in] */ __RPC__in REFIID riid,
            /* [annotation][iid_is][out] */ 
            _COM_Outptr_  void **ppvObject);
        
        DECLSPEC_XFGVIRT(IUnknown, AddRef)
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            __RPC__in IOfflineFilesEvents3 * This);
        
        DECLSPEC_XFGVIRT(IUnknown, Release)
        ULONG ( STDMETHODCALLTYPE *Release )( 
            __RPC__in IOfflineFilesEvents3 * This);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents, CacheMoved)
        HRESULT ( STDMETHODCALLTYPE *CacheMoved )( 
            __RPC__in IOfflineFilesEvents3 * This,
            /* [string][in] */ __RPC__in_string LPCWSTR pszOldPath,
            /* [string][in] */ __RPC__in_string LPCWSTR pszNewPath);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents, CacheIsFull)
        HRESULT ( STDMETHODCALLTYPE *CacheIsFull )( 
            __RPC__in IOfflineFilesEvents3 * This);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents, CacheIsCorrupted)
        HRESULT ( STDMETHODCALLTYPE *CacheIsCorrupted )( 
            __RPC__in IOfflineFilesEvents3 * This);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents, Enabled)
        HRESULT ( STDMETHODCALLTYPE *Enabled )( 
            __RPC__in IOfflineFilesEvents3 * This,
            /* [in] */ BOOL bEnabled);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents, EncryptionChanged)
        HRESULT ( STDMETHODCALLTYPE *EncryptionChanged )( 
            __RPC__in IOfflineFilesEvents3 * This,
            /* [in] */ BOOL bWasEncrypted,
            /* [in] */ BOOL bWasPartial,
            /* [in] */ BOOL bIsEncrypted,
            /* [in] */ BOOL bIsPartial);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents, SyncBegin)
        HRESULT ( STDMETHODCALLTYPE *SyncBegin )( 
            __RPC__in IOfflineFilesEvents3 * This,
            /* [in] */ __RPC__in REFGUID rSyncId);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents, SyncFileResult)
        HRESULT ( STDMETHODCALLTYPE *SyncFileResult )( 
            __RPC__in IOfflineFilesEvents3 * This,
            /* [in] */ __RPC__in REFGUID rSyncId,
            /* [string][in] */ __RPC__in_string LPCWSTR pszFile,
            /* [in] */ HRESULT hrResult);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents, SyncConflictRecAdded)
        HRESULT ( STDMETHODCALLTYPE *SyncConflictRecAdded )( 
            __RPC__in IOfflineFilesEvents3 * This,
            /* [string][in] */ __RPC__in_string LPCWSTR pszConflictPath,
            /* [in] */ __RPC__in const FILETIME *pftConflictDateTime,
            /* [in] */ OFFLINEFILES_SYNC_STATE ConflictSyncState);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents, SyncConflictRecUpdated)
        HRESULT ( STDMETHODCALLTYPE *SyncConflictRecUpdated )( 
            __RPC__in IOfflineFilesEvents3 * This,
            /* [string][in] */ __RPC__in_string LPCWSTR pszConflictPath,
            /* [in] */ __RPC__in const FILETIME *pftConflictDateTime,
            /* [in] */ OFFLINEFILES_SYNC_STATE ConflictSyncState);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents, SyncConflictRecRemoved)
        HRESULT ( STDMETHODCALLTYPE *SyncConflictRecRemoved )( 
            __RPC__in IOfflineFilesEvents3 * This,
            /* [string][in] */ __RPC__in_string LPCWSTR pszConflictPath,
            /* [in] */ __RPC__in const FILETIME *pftConflictDateTime,
            /* [in] */ OFFLINEFILES_SYNC_STATE ConflictSyncState);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents, SyncEnd)
        HRESULT ( STDMETHODCALLTYPE *SyncEnd )( 
            __RPC__in IOfflineFilesEvents3 * This,
            /* [in] */ __RPC__in REFGUID rSyncId,
            /* [in] */ HRESULT hrResult);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents, NetTransportArrived)
        HRESULT ( STDMETHODCALLTYPE *NetTransportArrived )( 
            __RPC__in IOfflineFilesEvents3 * This);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents, NoNetTransports)
        HRESULT ( STDMETHODCALLTYPE *NoNetTransports )( 
            __RPC__in IOfflineFilesEvents3 * This);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents, ItemDisconnected)
        HRESULT ( STDMETHODCALLTYPE *ItemDisconnected )( 
            __RPC__in IOfflineFilesEvents3 * This,
            /* [string][in] */ __RPC__in_string LPCWSTR pszPath,
            /* [in] */ OFFLINEFILES_ITEM_TYPE ItemType);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents, ItemReconnected)
        HRESULT ( STDMETHODCALLTYPE *ItemReconnected )( 
            __RPC__in IOfflineFilesEvents3 * This,
            /* [string][in] */ __RPC__in_string LPCWSTR pszPath,
            /* [in] */ OFFLINEFILES_ITEM_TYPE ItemType);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents, ItemAvailableOffline)
        HRESULT ( STDMETHODCALLTYPE *ItemAvailableOffline )( 
            __RPC__in IOfflineFilesEvents3 * This,
            /* [string][in] */ __RPC__in_string LPCWSTR pszPath,
            /* [in] */ OFFLINEFILES_ITEM_TYPE ItemType);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents, ItemNotAvailableOffline)
        HRESULT ( STDMETHODCALLTYPE *ItemNotAvailableOffline )( 
            __RPC__in IOfflineFilesEvents3 * This,
            /* [string][in] */ __RPC__in_string LPCWSTR pszPath,
            /* [in] */ OFFLINEFILES_ITEM_TYPE ItemType);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents, ItemPinned)
        HRESULT ( STDMETHODCALLTYPE *ItemPinned )( 
            __RPC__in IOfflineFilesEvents3 * This,
            /* [string][in] */ __RPC__in_string LPCWSTR pszPath,
            /* [in] */ OFFLINEFILES_ITEM_TYPE ItemType);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents, ItemNotPinned)
        HRESULT ( STDMETHODCALLTYPE *ItemNotPinned )( 
            __RPC__in IOfflineFilesEvents3 * This,
            /* [string][in] */ __RPC__in_string LPCWSTR pszPath,
            /* [in] */ OFFLINEFILES_ITEM_TYPE ItemType);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents, ItemModified)
        HRESULT ( STDMETHODCALLTYPE *ItemModified )( 
            __RPC__in IOfflineFilesEvents3 * This,
            /* [string][in] */ __RPC__in_string LPCWSTR pszPath,
            /* [in] */ OFFLINEFILES_ITEM_TYPE ItemType,
            /* [in] */ BOOL bModifiedData,
            /* [in] */ BOOL bModifiedAttributes);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents, ItemAddedToCache)
        HRESULT ( STDMETHODCALLTYPE *ItemAddedToCache )( 
            __RPC__in IOfflineFilesEvents3 * This,
            /* [string][in] */ __RPC__in_string LPCWSTR pszPath,
            /* [in] */ OFFLINEFILES_ITEM_TYPE ItemType);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents, ItemDeletedFromCache)
        HRESULT ( STDMETHODCALLTYPE *ItemDeletedFromCache )( 
            __RPC__in IOfflineFilesEvents3 * This,
            /* [string][in] */ __RPC__in_string LPCWSTR pszPath,
            /* [in] */ OFFLINEFILES_ITEM_TYPE ItemType);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents, ItemRenamed)
        HRESULT ( STDMETHODCALLTYPE *ItemRenamed )( 
            __RPC__in IOfflineFilesEvents3 * This,
            /* [string][in] */ __RPC__in_string LPCWSTR pszOldPath,
            /* [string][in] */ __RPC__in_string LPCWSTR pszNewPath,
            /* [in] */ OFFLINEFILES_ITEM_TYPE ItemType);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents, DataLost)
        HRESULT ( STDMETHODCALLTYPE *DataLost )( 
            __RPC__in IOfflineFilesEvents3 * This);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents, Ping)
        HRESULT ( STDMETHODCALLTYPE *Ping )( 
            __RPC__in IOfflineFilesEvents3 * This);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents2, ItemReconnectBegin)
        HRESULT ( STDMETHODCALLTYPE *ItemReconnectBegin )( 
            __RPC__in IOfflineFilesEvents3 * This);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents2, ItemReconnectEnd)
        HRESULT ( STDMETHODCALLTYPE *ItemReconnectEnd )( 
            __RPC__in IOfflineFilesEvents3 * This);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents2, CacheEvictBegin)
        HRESULT ( STDMETHODCALLTYPE *CacheEvictBegin )( 
            __RPC__in IOfflineFilesEvents3 * This);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents2, CacheEvictEnd)
        HRESULT ( STDMETHODCALLTYPE *CacheEvictEnd )( 
            __RPC__in IOfflineFilesEvents3 * This);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents2, BackgroundSyncBegin)
        HRESULT ( STDMETHODCALLTYPE *BackgroundSyncBegin )( 
            __RPC__in IOfflineFilesEvents3 * This,
            /* [in] */ DWORD dwSyncControlFlags);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents2, BackgroundSyncEnd)
        HRESULT ( STDMETHODCALLTYPE *BackgroundSyncEnd )( 
            __RPC__in IOfflineFilesEvents3 * This,
            /* [in] */ DWORD dwSyncControlFlags);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents2, PolicyChangeDetected)
        HRESULT ( STDMETHODCALLTYPE *PolicyChangeDetected )( 
            __RPC__in IOfflineFilesEvents3 * This);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents2, PreferenceChangeDetected)
        HRESULT ( STDMETHODCALLTYPE *PreferenceChangeDetected )( 
            __RPC__in IOfflineFilesEvents3 * This);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents2, SettingsChangesApplied)
        HRESULT ( STDMETHODCALLTYPE *SettingsChangesApplied )( 
            __RPC__in IOfflineFilesEvents3 * This);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents3, TransparentCacheItemNotify)
        HRESULT ( STDMETHODCALLTYPE *TransparentCacheItemNotify )( 
            __RPC__in IOfflineFilesEvents3 * This,
            /* [string][in] */ __RPC__in_string LPCWSTR pszPath,
            /* [in] */ OFFLINEFILES_EVENTS EventType,
            /* [in] */ OFFLINEFILES_ITEM_TYPE ItemType,
            /* [in] */ BOOL bModifiedData,
            /* [in] */ BOOL bModifiedAttributes,
            /* [string][in] */ __RPC__in_string LPCWSTR pzsOldPath);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents3, PrefetchFileBegin)
        HRESULT ( STDMETHODCALLTYPE *PrefetchFileBegin )( 
            __RPC__in IOfflineFilesEvents3 * This,
            /* [string][in] */ __RPC__in_string LPCWSTR pszPath);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents3, PrefetchFileEnd)
        HRESULT ( STDMETHODCALLTYPE *PrefetchFileEnd )( 
            __RPC__in IOfflineFilesEvents3 * This,
            /* [string][in] */ __RPC__in_string LPCWSTR pszPath,
            /* [in] */ HRESULT hrResult);
        
        END_INTERFACE
    } IOfflineFilesEvents3Vtbl;

    interface IOfflineFilesEvents3
    {
        CONST_VTBL struct IOfflineFilesEvents3Vtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IOfflineFilesEvents3_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IOfflineFilesEvents3_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IOfflineFilesEvents3_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IOfflineFilesEvents3_CacheMoved(This,pszOldPath,pszNewPath)	\
    ( (This)->lpVtbl -> CacheMoved(This,pszOldPath,pszNewPath) ) 

#define IOfflineFilesEvents3_CacheIsFull(This)	\
    ( (This)->lpVtbl -> CacheIsFull(This) ) 

#define IOfflineFilesEvents3_CacheIsCorrupted(This)	\
    ( (This)->lpVtbl -> CacheIsCorrupted(This) ) 

#define IOfflineFilesEvents3_Enabled(This,bEnabled)	\
    ( (This)->lpVtbl -> Enabled(This,bEnabled) ) 

#define IOfflineFilesEvents3_EncryptionChanged(This,bWasEncrypted,bWasPartial,bIsEncrypted,bIsPartial)	\
    ( (This)->lpVtbl -> EncryptionChanged(This,bWasEncrypted,bWasPartial,bIsEncrypted,bIsPartial) ) 

#define IOfflineFilesEvents3_SyncBegin(This,rSyncId)	\
    ( (This)->lpVtbl -> SyncBegin(This,rSyncId) ) 

#define IOfflineFilesEvents3_SyncFileResult(This,rSyncId,pszFile,hrResult)	\
    ( (This)->lpVtbl -> SyncFileResult(This,rSyncId,pszFile,hrResult) ) 

#define IOfflineFilesEvents3_SyncConflictRecAdded(This,pszConflictPath,pftConflictDateTime,ConflictSyncState)	\
    ( (This)->lpVtbl -> SyncConflictRecAdded(This,pszConflictPath,pftConflictDateTime,ConflictSyncState) ) 

#define IOfflineFilesEvents3_SyncConflictRecUpdated(This,pszConflictPath,pftConflictDateTime,ConflictSyncState)	\
    ( (This)->lpVtbl -> SyncConflictRecUpdated(This,pszConflictPath,pftConflictDateTime,ConflictSyncState) ) 

#define IOfflineFilesEvents3_SyncConflictRecRemoved(This,pszConflictPath,pftConflictDateTime,ConflictSyncState)	\
    ( (This)->lpVtbl -> SyncConflictRecRemoved(This,pszConflictPath,pftConflictDateTime,ConflictSyncState) ) 

#define IOfflineFilesEvents3_SyncEnd(This,rSyncId,hrResult)	\
    ( (This)->lpVtbl -> SyncEnd(This,rSyncId,hrResult) ) 

#define IOfflineFilesEvents3_NetTransportArrived(This)	\
    ( (This)->lpVtbl -> NetTransportArrived(This) ) 

#define IOfflineFilesEvents3_NoNetTransports(This)	\
    ( (This)->lpVtbl -> NoNetTransports(This) ) 

#define IOfflineFilesEvents3_ItemDisconnected(This,pszPath,ItemType)	\
    ( (This)->lpVtbl -> ItemDisconnected(This,pszPath,ItemType) ) 

#define IOfflineFilesEvents3_ItemReconnected(This,pszPath,ItemType)	\
    ( (This)->lpVtbl -> ItemReconnected(This,pszPath,ItemType) ) 

#define IOfflineFilesEvents3_ItemAvailableOffline(This,pszPath,ItemType)	\
    ( (This)->lpVtbl -> ItemAvailableOffline(This,pszPath,ItemType) ) 

#define IOfflineFilesEvents3_ItemNotAvailableOffline(This,pszPath,ItemType)	\
    ( (This)->lpVtbl -> ItemNotAvailableOffline(This,pszPath,ItemType) ) 

#define IOfflineFilesEvents3_ItemPinned(This,pszPath,ItemType)	\
    ( (This)->lpVtbl -> ItemPinned(This,pszPath,ItemType) ) 

#define IOfflineFilesEvents3_ItemNotPinned(This,pszPath,ItemType)	\
    ( (This)->lpVtbl -> ItemNotPinned(This,pszPath,ItemType) ) 

#define IOfflineFilesEvents3_ItemModified(This,pszPath,ItemType,bModifiedData,bModifiedAttributes)	\
    ( (This)->lpVtbl -> ItemModified(This,pszPath,ItemType,bModifiedData,bModifiedAttributes) ) 

#define IOfflineFilesEvents3_ItemAddedToCache(This,pszPath,ItemType)	\
    ( (This)->lpVtbl -> ItemAddedToCache(This,pszPath,ItemType) ) 

#define IOfflineFilesEvents3_ItemDeletedFromCache(This,pszPath,ItemType)	\
    ( (This)->lpVtbl -> ItemDeletedFromCache(This,pszPath,ItemType) ) 

#define IOfflineFilesEvents3_ItemRenamed(This,pszOldPath,pszNewPath,ItemType)	\
    ( (This)->lpVtbl -> ItemRenamed(This,pszOldPath,pszNewPath,ItemType) ) 

#define IOfflineFilesEvents3_DataLost(This)	\
    ( (This)->lpVtbl -> DataLost(This) ) 

#define IOfflineFilesEvents3_Ping(This)	\
    ( (This)->lpVtbl -> Ping(This) ) 


#define IOfflineFilesEvents3_ItemReconnectBegin(This)	\
    ( (This)->lpVtbl -> ItemReconnectBegin(This) ) 

#define IOfflineFilesEvents3_ItemReconnectEnd(This)	\
    ( (This)->lpVtbl -> ItemReconnectEnd(This) ) 

#define IOfflineFilesEvents3_CacheEvictBegin(This)	\
    ( (This)->lpVtbl -> CacheEvictBegin(This) ) 

#define IOfflineFilesEvents3_CacheEvictEnd(This)	\
    ( (This)->lpVtbl -> CacheEvictEnd(This) ) 

#define IOfflineFilesEvents3_BackgroundSyncBegin(This,dwSyncControlFlags)	\
    ( (This)->lpVtbl -> BackgroundSyncBegin(This,dwSyncControlFlags) ) 

#define IOfflineFilesEvents3_BackgroundSyncEnd(This,dwSyncControlFlags)	\
    ( (This)->lpVtbl -> BackgroundSyncEnd(This,dwSyncControlFlags) ) 

#define IOfflineFilesEvents3_PolicyChangeDetected(This)	\
    ( (This)->lpVtbl -> PolicyChangeDetected(This) ) 

#define IOfflineFilesEvents3_PreferenceChangeDetected(This)	\
    ( (This)->lpVtbl -> PreferenceChangeDetected(This) ) 

#define IOfflineFilesEvents3_SettingsChangesApplied(This)	\
    ( (This)->lpVtbl -> SettingsChangesApplied(This) ) 


#define IOfflineFilesEvents3_TransparentCacheItemNotify(This,pszPath,EventType,ItemType,bModifiedData,bModifiedAttributes,pzsOldPath)	\
    ( (This)->lpVtbl -> TransparentCacheItemNotify(This,pszPath,EventType,ItemType,bModifiedData,bModifiedAttributes,pzsOldPath) ) 

#define IOfflineFilesEvents3_PrefetchFileBegin(This,pszPath)	\
    ( (This)->lpVtbl -> PrefetchFileBegin(This,pszPath) ) 

#define IOfflineFilesEvents3_PrefetchFileEnd(This,pszPath,hrResult)	\
    ( (This)->lpVtbl -> PrefetchFileEnd(This,pszPath,hrResult) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __IOfflineFilesEvents3_INTERFACE_DEFINED__ */


#ifndef __IOfflineFilesEvents4_INTERFACE_DEFINED__
#define __IOfflineFilesEvents4_INTERFACE_DEFINED__

/* interface IOfflineFilesEvents4 */
/* [helpstring][uuid][object] */ 


EXTERN_C const IID IID_IOfflineFilesEvents4;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("DBD69B1E-C7D2-473e-B35F-9D8C24C0C484")
    IOfflineFilesEvents4 : public IOfflineFilesEvents3
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE PrefetchCloseHandleBegin( void) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE PrefetchCloseHandleEnd( 
            /* [in] */ DWORD dwClosedHandleCount,
            /* [in] */ DWORD dwOpenHandleCount,
            /* [in] */ HRESULT hrResult) = 0;
        
    };
    
    
#else 	/* C style interface */

    typedef struct IOfflineFilesEvents4Vtbl
    {
        BEGIN_INTERFACE
        
        DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            __RPC__in IOfflineFilesEvents4 * This,
            /* [in] */ __RPC__in REFIID riid,
            /* [annotation][iid_is][out] */ 
            _COM_Outptr_  void **ppvObject);
        
        DECLSPEC_XFGVIRT(IUnknown, AddRef)
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            __RPC__in IOfflineFilesEvents4 * This);
        
        DECLSPEC_XFGVIRT(IUnknown, Release)
        ULONG ( STDMETHODCALLTYPE *Release )( 
            __RPC__in IOfflineFilesEvents4 * This);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents, CacheMoved)
        HRESULT ( STDMETHODCALLTYPE *CacheMoved )( 
            __RPC__in IOfflineFilesEvents4 * This,
            /* [string][in] */ __RPC__in_string LPCWSTR pszOldPath,
            /* [string][in] */ __RPC__in_string LPCWSTR pszNewPath);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents, CacheIsFull)
        HRESULT ( STDMETHODCALLTYPE *CacheIsFull )( 
            __RPC__in IOfflineFilesEvents4 * This);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents, CacheIsCorrupted)
        HRESULT ( STDMETHODCALLTYPE *CacheIsCorrupted )( 
            __RPC__in IOfflineFilesEvents4 * This);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents, Enabled)
        HRESULT ( STDMETHODCALLTYPE *Enabled )( 
            __RPC__in IOfflineFilesEvents4 * This,
            /* [in] */ BOOL bEnabled);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents, EncryptionChanged)
        HRESULT ( STDMETHODCALLTYPE *EncryptionChanged )( 
            __RPC__in IOfflineFilesEvents4 * This,
            /* [in] */ BOOL bWasEncrypted,
            /* [in] */ BOOL bWasPartial,
            /* [in] */ BOOL bIsEncrypted,
            /* [in] */ BOOL bIsPartial);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents, SyncBegin)
        HRESULT ( STDMETHODCALLTYPE *SyncBegin )( 
            __RPC__in IOfflineFilesEvents4 * This,
            /* [in] */ __RPC__in REFGUID rSyncId);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents, SyncFileResult)
        HRESULT ( STDMETHODCALLTYPE *SyncFileResult )( 
            __RPC__in IOfflineFilesEvents4 * This,
            /* [in] */ __RPC__in REFGUID rSyncId,
            /* [string][in] */ __RPC__in_string LPCWSTR pszFile,
            /* [in] */ HRESULT hrResult);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents, SyncConflictRecAdded)
        HRESULT ( STDMETHODCALLTYPE *SyncConflictRecAdded )( 
            __RPC__in IOfflineFilesEvents4 * This,
            /* [string][in] */ __RPC__in_string LPCWSTR pszConflictPath,
            /* [in] */ __RPC__in const FILETIME *pftConflictDateTime,
            /* [in] */ OFFLINEFILES_SYNC_STATE ConflictSyncState);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents, SyncConflictRecUpdated)
        HRESULT ( STDMETHODCALLTYPE *SyncConflictRecUpdated )( 
            __RPC__in IOfflineFilesEvents4 * This,
            /* [string][in] */ __RPC__in_string LPCWSTR pszConflictPath,
            /* [in] */ __RPC__in const FILETIME *pftConflictDateTime,
            /* [in] */ OFFLINEFILES_SYNC_STATE ConflictSyncState);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents, SyncConflictRecRemoved)
        HRESULT ( STDMETHODCALLTYPE *SyncConflictRecRemoved )( 
            __RPC__in IOfflineFilesEvents4 * This,
            /* [string][in] */ __RPC__in_string LPCWSTR pszConflictPath,
            /* [in] */ __RPC__in const FILETIME *pftConflictDateTime,
            /* [in] */ OFFLINEFILES_SYNC_STATE ConflictSyncState);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents, SyncEnd)
        HRESULT ( STDMETHODCALLTYPE *SyncEnd )( 
            __RPC__in IOfflineFilesEvents4 * This,
            /* [in] */ __RPC__in REFGUID rSyncId,
            /* [in] */ HRESULT hrResult);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents, NetTransportArrived)
        HRESULT ( STDMETHODCALLTYPE *NetTransportArrived )( 
            __RPC__in IOfflineFilesEvents4 * This);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents, NoNetTransports)
        HRESULT ( STDMETHODCALLTYPE *NoNetTransports )( 
            __RPC__in IOfflineFilesEvents4 * This);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents, ItemDisconnected)
        HRESULT ( STDMETHODCALLTYPE *ItemDisconnected )( 
            __RPC__in IOfflineFilesEvents4 * This,
            /* [string][in] */ __RPC__in_string LPCWSTR pszPath,
            /* [in] */ OFFLINEFILES_ITEM_TYPE ItemType);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents, ItemReconnected)
        HRESULT ( STDMETHODCALLTYPE *ItemReconnected )( 
            __RPC__in IOfflineFilesEvents4 * This,
            /* [string][in] */ __RPC__in_string LPCWSTR pszPath,
            /* [in] */ OFFLINEFILES_ITEM_TYPE ItemType);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents, ItemAvailableOffline)
        HRESULT ( STDMETHODCALLTYPE *ItemAvailableOffline )( 
            __RPC__in IOfflineFilesEvents4 * This,
            /* [string][in] */ __RPC__in_string LPCWSTR pszPath,
            /* [in] */ OFFLINEFILES_ITEM_TYPE ItemType);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents, ItemNotAvailableOffline)
        HRESULT ( STDMETHODCALLTYPE *ItemNotAvailableOffline )( 
            __RPC__in IOfflineFilesEvents4 * This,
            /* [string][in] */ __RPC__in_string LPCWSTR pszPath,
            /* [in] */ OFFLINEFILES_ITEM_TYPE ItemType);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents, ItemPinned)
        HRESULT ( STDMETHODCALLTYPE *ItemPinned )( 
            __RPC__in IOfflineFilesEvents4 * This,
            /* [string][in] */ __RPC__in_string LPCWSTR pszPath,
            /* [in] */ OFFLINEFILES_ITEM_TYPE ItemType);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents, ItemNotPinned)
        HRESULT ( STDMETHODCALLTYPE *ItemNotPinned )( 
            __RPC__in IOfflineFilesEvents4 * This,
            /* [string][in] */ __RPC__in_string LPCWSTR pszPath,
            /* [in] */ OFFLINEFILES_ITEM_TYPE ItemType);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents, ItemModified)
        HRESULT ( STDMETHODCALLTYPE *ItemModified )( 
            __RPC__in IOfflineFilesEvents4 * This,
            /* [string][in] */ __RPC__in_string LPCWSTR pszPath,
            /* [in] */ OFFLINEFILES_ITEM_TYPE ItemType,
            /* [in] */ BOOL bModifiedData,
            /* [in] */ BOOL bModifiedAttributes);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents, ItemAddedToCache)
        HRESULT ( STDMETHODCALLTYPE *ItemAddedToCache )( 
            __RPC__in IOfflineFilesEvents4 * This,
            /* [string][in] */ __RPC__in_string LPCWSTR pszPath,
            /* [in] */ OFFLINEFILES_ITEM_TYPE ItemType);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents, ItemDeletedFromCache)
        HRESULT ( STDMETHODCALLTYPE *ItemDeletedFromCache )( 
            __RPC__in IOfflineFilesEvents4 * This,
            /* [string][in] */ __RPC__in_string LPCWSTR pszPath,
            /* [in] */ OFFLINEFILES_ITEM_TYPE ItemType);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents, ItemRenamed)
        HRESULT ( STDMETHODCALLTYPE *ItemRenamed )( 
            __RPC__in IOfflineFilesEvents4 * This,
            /* [string][in] */ __RPC__in_string LPCWSTR pszOldPath,
            /* [string][in] */ __RPC__in_string LPCWSTR pszNewPath,
            /* [in] */ OFFLINEFILES_ITEM_TYPE ItemType);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents, DataLost)
        HRESULT ( STDMETHODCALLTYPE *DataLost )( 
            __RPC__in IOfflineFilesEvents4 * This);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents, Ping)
        HRESULT ( STDMETHODCALLTYPE *Ping )( 
            __RPC__in IOfflineFilesEvents4 * This);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents2, ItemReconnectBegin)
        HRESULT ( STDMETHODCALLTYPE *ItemReconnectBegin )( 
            __RPC__in IOfflineFilesEvents4 * This);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents2, ItemReconnectEnd)
        HRESULT ( STDMETHODCALLTYPE *ItemReconnectEnd )( 
            __RPC__in IOfflineFilesEvents4 * This);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents2, CacheEvictBegin)
        HRESULT ( STDMETHODCALLTYPE *CacheEvictBegin )( 
            __RPC__in IOfflineFilesEvents4 * This);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents2, CacheEvictEnd)
        HRESULT ( STDMETHODCALLTYPE *CacheEvictEnd )( 
            __RPC__in IOfflineFilesEvents4 * This);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents2, BackgroundSyncBegin)
        HRESULT ( STDMETHODCALLTYPE *BackgroundSyncBegin )( 
            __RPC__in IOfflineFilesEvents4 * This,
            /* [in] */ DWORD dwSyncControlFlags);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents2, BackgroundSyncEnd)
        HRESULT ( STDMETHODCALLTYPE *BackgroundSyncEnd )( 
            __RPC__in IOfflineFilesEvents4 * This,
            /* [in] */ DWORD dwSyncControlFlags);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents2, PolicyChangeDetected)
        HRESULT ( STDMETHODCALLTYPE *PolicyChangeDetected )( 
            __RPC__in IOfflineFilesEvents4 * This);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents2, PreferenceChangeDetected)
        HRESULT ( STDMETHODCALLTYPE *PreferenceChangeDetected )( 
            __RPC__in IOfflineFilesEvents4 * This);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents2, SettingsChangesApplied)
        HRESULT ( STDMETHODCALLTYPE *SettingsChangesApplied )( 
            __RPC__in IOfflineFilesEvents4 * This);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents3, TransparentCacheItemNotify)
        HRESULT ( STDMETHODCALLTYPE *TransparentCacheItemNotify )( 
            __RPC__in IOfflineFilesEvents4 * This,
            /* [string][in] */ __RPC__in_string LPCWSTR pszPath,
            /* [in] */ OFFLINEFILES_EVENTS EventType,
            /* [in] */ OFFLINEFILES_ITEM_TYPE ItemType,
            /* [in] */ BOOL bModifiedData,
            /* [in] */ BOOL bModifiedAttributes,
            /* [string][in] */ __RPC__in_string LPCWSTR pzsOldPath);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents3, PrefetchFileBegin)
        HRESULT ( STDMETHODCALLTYPE *PrefetchFileBegin )( 
            __RPC__in IOfflineFilesEvents4 * This,
            /* [string][in] */ __RPC__in_string LPCWSTR pszPath);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents3, PrefetchFileEnd)
        HRESULT ( STDMETHODCALLTYPE *PrefetchFileEnd )( 
            __RPC__in IOfflineFilesEvents4 * This,
            /* [string][in] */ __RPC__in_string LPCWSTR pszPath,
            /* [in] */ HRESULT hrResult);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents4, PrefetchCloseHandleBegin)
        HRESULT ( STDMETHODCALLTYPE *PrefetchCloseHandleBegin )( 
            __RPC__in IOfflineFilesEvents4 * This);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEvents4, PrefetchCloseHandleEnd)
        HRESULT ( STDMETHODCALLTYPE *PrefetchCloseHandleEnd )( 
            __RPC__in IOfflineFilesEvents4 * This,
            /* [in] */ DWORD dwClosedHandleCount,
            /* [in] */ DWORD dwOpenHandleCount,
            /* [in] */ HRESULT hrResult);
        
        END_INTERFACE
    } IOfflineFilesEvents4Vtbl;

    interface IOfflineFilesEvents4
    {
        CONST_VTBL struct IOfflineFilesEvents4Vtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IOfflineFilesEvents4_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IOfflineFilesEvents4_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IOfflineFilesEvents4_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IOfflineFilesEvents4_CacheMoved(This,pszOldPath,pszNewPath)	\
    ( (This)->lpVtbl -> CacheMoved(This,pszOldPath,pszNewPath) ) 

#define IOfflineFilesEvents4_CacheIsFull(This)	\
    ( (This)->lpVtbl -> CacheIsFull(This) ) 

#define IOfflineFilesEvents4_CacheIsCorrupted(This)	\
    ( (This)->lpVtbl -> CacheIsCorrupted(This) ) 

#define IOfflineFilesEvents4_Enabled(This,bEnabled)	\
    ( (This)->lpVtbl -> Enabled(This,bEnabled) ) 

#define IOfflineFilesEvents4_EncryptionChanged(This,bWasEncrypted,bWasPartial,bIsEncrypted,bIsPartial)	\
    ( (This)->lpVtbl -> EncryptionChanged(This,bWasEncrypted,bWasPartial,bIsEncrypted,bIsPartial) ) 

#define IOfflineFilesEvents4_SyncBegin(This,rSyncId)	\
    ( (This)->lpVtbl -> SyncBegin(This,rSyncId) ) 

#define IOfflineFilesEvents4_SyncFileResult(This,rSyncId,pszFile,hrResult)	\
    ( (This)->lpVtbl -> SyncFileResult(This,rSyncId,pszFile,hrResult) ) 

#define IOfflineFilesEvents4_SyncConflictRecAdded(This,pszConflictPath,pftConflictDateTime,ConflictSyncState)	\
    ( (This)->lpVtbl -> SyncConflictRecAdded(This,pszConflictPath,pftConflictDateTime,ConflictSyncState) ) 

#define IOfflineFilesEvents4_SyncConflictRecUpdated(This,pszConflictPath,pftConflictDateTime,ConflictSyncState)	\
    ( (This)->lpVtbl -> SyncConflictRecUpdated(This,pszConflictPath,pftConflictDateTime,ConflictSyncState) ) 

#define IOfflineFilesEvents4_SyncConflictRecRemoved(This,pszConflictPath,pftConflictDateTime,ConflictSyncState)	\
    ( (This)->lpVtbl -> SyncConflictRecRemoved(This,pszConflictPath,pftConflictDateTime,ConflictSyncState) ) 

#define IOfflineFilesEvents4_SyncEnd(This,rSyncId,hrResult)	\
    ( (This)->lpVtbl -> SyncEnd(This,rSyncId,hrResult) ) 

#define IOfflineFilesEvents4_NetTransportArrived(This)	\
    ( (This)->lpVtbl -> NetTransportArrived(This) ) 

#define IOfflineFilesEvents4_NoNetTransports(This)	\
    ( (This)->lpVtbl -> NoNetTransports(This) ) 

#define IOfflineFilesEvents4_ItemDisconnected(This,pszPath,ItemType)	\
    ( (This)->lpVtbl -> ItemDisconnected(This,pszPath,ItemType) ) 

#define IOfflineFilesEvents4_ItemReconnected(This,pszPath,ItemType)	\
    ( (This)->lpVtbl -> ItemReconnected(This,pszPath,ItemType) ) 

#define IOfflineFilesEvents4_ItemAvailableOffline(This,pszPath,ItemType)	\
    ( (This)->lpVtbl -> ItemAvailableOffline(This,pszPath,ItemType) ) 

#define IOfflineFilesEvents4_ItemNotAvailableOffline(This,pszPath,ItemType)	\
    ( (This)->lpVtbl -> ItemNotAvailableOffline(This,pszPath,ItemType) ) 

#define IOfflineFilesEvents4_ItemPinned(This,pszPath,ItemType)	\
    ( (This)->lpVtbl -> ItemPinned(This,pszPath,ItemType) ) 

#define IOfflineFilesEvents4_ItemNotPinned(This,pszPath,ItemType)	\
    ( (This)->lpVtbl -> ItemNotPinned(This,pszPath,ItemType) ) 

#define IOfflineFilesEvents4_ItemModified(This,pszPath,ItemType,bModifiedData,bModifiedAttributes)	\
    ( (This)->lpVtbl -> ItemModified(This,pszPath,ItemType,bModifiedData,bModifiedAttributes) ) 

#define IOfflineFilesEvents4_ItemAddedToCache(This,pszPath,ItemType)	\
    ( (This)->lpVtbl -> ItemAddedToCache(This,pszPath,ItemType) ) 

#define IOfflineFilesEvents4_ItemDeletedFromCache(This,pszPath,ItemType)	\
    ( (This)->lpVtbl -> ItemDeletedFromCache(This,pszPath,ItemType) ) 

#define IOfflineFilesEvents4_ItemRenamed(This,pszOldPath,pszNewPath,ItemType)	\
    ( (This)->lpVtbl -> ItemRenamed(This,pszOldPath,pszNewPath,ItemType) ) 

#define IOfflineFilesEvents4_DataLost(This)	\
    ( (This)->lpVtbl -> DataLost(This) ) 

#define IOfflineFilesEvents4_Ping(This)	\
    ( (This)->lpVtbl -> Ping(This) ) 


#define IOfflineFilesEvents4_ItemReconnectBegin(This)	\
    ( (This)->lpVtbl -> ItemReconnectBegin(This) ) 

#define IOfflineFilesEvents4_ItemReconnectEnd(This)	\
    ( (This)->lpVtbl -> ItemReconnectEnd(This) ) 

#define IOfflineFilesEvents4_CacheEvictBegin(This)	\
    ( (This)->lpVtbl -> CacheEvictBegin(This) ) 

#define IOfflineFilesEvents4_CacheEvictEnd(This)	\
    ( (This)->lpVtbl -> CacheEvictEnd(This) ) 

#define IOfflineFilesEvents4_BackgroundSyncBegin(This,dwSyncControlFlags)	\
    ( (This)->lpVtbl -> BackgroundSyncBegin(This,dwSyncControlFlags) ) 

#define IOfflineFilesEvents4_BackgroundSyncEnd(This,dwSyncControlFlags)	\
    ( (This)->lpVtbl -> BackgroundSyncEnd(This,dwSyncControlFlags) ) 

#define IOfflineFilesEvents4_PolicyChangeDetected(This)	\
    ( (This)->lpVtbl -> PolicyChangeDetected(This) ) 

#define IOfflineFilesEvents4_PreferenceChangeDetected(This)	\
    ( (This)->lpVtbl -> PreferenceChangeDetected(This) ) 

#define IOfflineFilesEvents4_SettingsChangesApplied(This)	\
    ( (This)->lpVtbl -> SettingsChangesApplied(This) ) 


#define IOfflineFilesEvents4_TransparentCacheItemNotify(This,pszPath,EventType,ItemType,bModifiedData,bModifiedAttributes,pzsOldPath)	\
    ( (This)->lpVtbl -> TransparentCacheItemNotify(This,pszPath,EventType,ItemType,bModifiedData,bModifiedAttributes,pzsOldPath) ) 

#define IOfflineFilesEvents4_PrefetchFileBegin(This,pszPath)	\
    ( (This)->lpVtbl -> PrefetchFileBegin(This,pszPath) ) 

#define IOfflineFilesEvents4_PrefetchFileEnd(This,pszPath,hrResult)	\
    ( (This)->lpVtbl -> PrefetchFileEnd(This,pszPath,hrResult) ) 


#define IOfflineFilesEvents4_PrefetchCloseHandleBegin(This)	\
    ( (This)->lpVtbl -> PrefetchCloseHandleBegin(This) ) 

#define IOfflineFilesEvents4_PrefetchCloseHandleEnd(This,dwClosedHandleCount,dwOpenHandleCount,hrResult)	\
    ( (This)->lpVtbl -> PrefetchCloseHandleEnd(This,dwClosedHandleCount,dwOpenHandleCount,hrResult) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __IOfflineFilesEvents4_INTERFACE_DEFINED__ */


#ifndef __IOfflineFilesEventsFilter_INTERFACE_DEFINED__
#define __IOfflineFilesEventsFilter_INTERFACE_DEFINED__

/* interface IOfflineFilesEventsFilter */
/* [helpstring][uuid][object] */ 


EXTERN_C const IID IID_IOfflineFilesEventsFilter;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("33FC4E1B-0716-40fa-BA65-6E62A84A846F")
    IOfflineFilesEventsFilter : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE GetPathFilter( 
            /* [string][out] */ __RPC__deref_out_opt_string LPWSTR *ppszFilter,
            /* [out] */ __RPC__out OFFLINEFILES_PATHFILTER_MATCH *pMatch) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetIncludedEvents( 
            /* [in] */ ULONG cElements,
            /* [length_is][size_is][out] */ __RPC__out_ecount_part(cElements, *pcEvents) OFFLINEFILES_EVENTS *prgEvents,
            /* [out] */ __RPC__out ULONG *pcEvents) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetExcludedEvents( 
            /* [in] */ ULONG cElements,
            /* [length_is][size_is][out] */ __RPC__out_ecount_part(cElements, *pcEvents) OFFLINEFILES_EVENTS *prgEvents,
            /* [out] */ __RPC__out ULONG *pcEvents) = 0;
        
    };
    
    
#else 	/* C style interface */

    typedef struct IOfflineFilesEventsFilterVtbl
    {
        BEGIN_INTERFACE
        
        DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            __RPC__in IOfflineFilesEventsFilter * This,
            /* [in] */ __RPC__in REFIID riid,
            /* [annotation][iid_is][out] */ 
            _COM_Outptr_  void **ppvObject);
        
        DECLSPEC_XFGVIRT(IUnknown, AddRef)
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            __RPC__in IOfflineFilesEventsFilter * This);
        
        DECLSPEC_XFGVIRT(IUnknown, Release)
        ULONG ( STDMETHODCALLTYPE *Release )( 
            __RPC__in IOfflineFilesEventsFilter * This);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEventsFilter, GetPathFilter)
        HRESULT ( STDMETHODCALLTYPE *GetPathFilter )( 
            __RPC__in IOfflineFilesEventsFilter * This,
            /* [string][out] */ __RPC__deref_out_opt_string LPWSTR *ppszFilter,
            /* [out] */ __RPC__out OFFLINEFILES_PATHFILTER_MATCH *pMatch);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEventsFilter, GetIncludedEvents)
        HRESULT ( STDMETHODCALLTYPE *GetIncludedEvents )( 
            __RPC__in IOfflineFilesEventsFilter * This,
            /* [in] */ ULONG cElements,
            /* [length_is][size_is][out] */ __RPC__out_ecount_part(cElements, *pcEvents) OFFLINEFILES_EVENTS *prgEvents,
            /* [out] */ __RPC__out ULONG *pcEvents);
        
        DECLSPEC_XFGVIRT(IOfflineFilesEventsFilter, GetExcludedEvents)
        HRESULT ( STDMETHODCALLTYPE *GetExcludedEvents )( 
            __RPC__in IOfflineFilesEventsFilter * This,
            /* [in] */ ULONG cElements,
            /* [length_is][size_is][out] */ __RPC__out_ecount_part(cElements, *pcEvents) OFFLINEFILES_EVENTS *prgEvents,
            /* [out] */ __RPC__out ULONG *pcEvents);
        
        END_INTERFACE
    } IOfflineFilesEventsFilterVtbl;

    interface IOfflineFilesEventsFilter
    {
        CONST_VTBL struct IOfflineFilesEventsFilterVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IOfflineFilesEventsFilter_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IOfflineFilesEventsFilter_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IOfflineFilesEventsFilter_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IOfflineFilesEventsFilter_GetPathFilter(This,ppszFilter,pMatch)	\
    ( (This)->lpVtbl -> GetPathFilter(This,ppszFilter,pMatch) ) 

#define IOfflineFilesEventsFilter_GetIncludedEvents(This,cElements,prgEvents,pcEvents)	\
    ( (This)->lpVtbl -> GetIncludedEvents(This,cElements,prgEvents,pcEvents) ) 

#define IOfflineFilesEventsFilter_GetExcludedEvents(This,cElements,prgEvents,pcEvents)	\
    ( (This)->lpVtbl -> GetExcludedEvents(This,cElements,prgEvents,pcEvents) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __IOfflineFilesEventsFilter_INTERFACE_DEFINED__ */


#ifndef __IOfflineFilesErrorInfo_INTERFACE_DEFINED__
#define __IOfflineFilesErrorInfo_INTERFACE_DEFINED__

/* interface IOfflineFilesErrorInfo */
/* [helpstring][uuid][object] */ 


EXTERN_C const IID IID_IOfflineFilesErrorInfo;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("7112FA5F-7571-435a-8EB7-195C7C1429BC")
    IOfflineFilesErrorInfo : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE GetRawData( 
            /* [out] */ __RPC__deref_out_opt BYTE_BLOB **ppBlob) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetDescription( 
            /* [out] */ __RPC__deref_out_opt LPWSTR *ppszDescription) = 0;
        
    };
    
    
#else 	/* C style interface */

    typedef struct IOfflineFilesErrorInfoVtbl
    {
        BEGIN_INTERFACE
        
        DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            __RPC__in IOfflineFilesErrorInfo * This,
            /* [in] */ __RPC__in REFIID riid,
            /* [annotation][iid_is][out] */ 
            _COM_Outptr_  void **ppvObject);
        
        DECLSPEC_XFGVIRT(IUnknown, AddRef)
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            __RPC__in IOfflineFilesErrorInfo * This);
        
        DECLSPEC_XFGVIRT(IUnknown, Release)
        ULONG ( STDMETHODCALLTYPE *Release )( 
            __RPC__in IOfflineFilesErrorInfo * This);
        
        DECLSPEC_XFGVIRT(IOfflineFilesErrorInfo, GetRawData)
        HRESULT ( STDMETHODCALLTYPE *GetRawData )( 
            __RPC__in IOfflineFilesErrorInfo * This,
            /* [out] */ __RPC__deref_out_opt BYTE_BLOB **ppBlob);
        
        DECLSPEC_XFGVIRT(IOfflineFilesErrorInfo, GetDescription)
        HRESULT ( STDMETHODCALLTYPE *GetDescription )( 
            __RPC__in IOfflineFilesErrorInfo * This,
            /* [out] */ __RPC__deref_out_opt LPWSTR *ppszDescription);
        
        END_INTERFACE
    } IOfflineFilesErrorInfoVtbl;

    interface IOfflineFilesErrorInfo
    {
        CONST_VTBL struct IOfflineFilesErrorInfoVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IOfflineFilesErrorInfo_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IOfflineFilesErrorInfo_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IOfflineFilesErrorInfo_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IOfflineFilesErrorInfo_GetRawData(This,ppBlob)	\
    ( (This)->lpVtbl -> GetRawData(This,ppBlob) ) 

#define IOfflineFilesErrorInfo_GetDescription(This,ppszDescription)	\
    ( (This)->lpVtbl -> GetDescription(This,ppszDescription) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __IOfflineFilesErrorInfo_INTERFACE_DEFINED__ */


#ifndef __IOfflineFilesSyncErrorItemInfo_INTERFACE_DEFINED__
#define __IOfflineFilesSyncErrorItemInfo_INTERFACE_DEFINED__

/* interface IOfflineFilesSyncErrorItemInfo */
/* [helpstring][uuid][object] */ 


EXTERN_C const IID IID_IOfflineFilesSyncErrorItemInfo;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("ECDBAF0D-6A18-4d55-8017-108F7660BA44")
    IOfflineFilesSyncErrorItemInfo : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE GetFileAttributes( 
            /* [out] */ __RPC__out DWORD *pdwAttributes) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetFileTimes( 
            /* [out] */ __RPC__out FILETIME *pftLastWrite,
            /* [out] */ __RPC__out FILETIME *pftChange) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetFileSize( 
            /* [out] */ __RPC__out LARGE_INTEGER *pSize) = 0;
        
    };
    
    
#else 	/* C style interface */

    typedef struct IOfflineFilesSyncErrorItemInfoVtbl
    {
        BEGIN_INTERFACE
        
        DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            __RPC__in IOfflineFilesSyncErrorItemInfo * This,
            /* [in] */ __RPC__in REFIID riid,
            /* [annotation][iid_is][out] */ 
            _COM_Outptr_  void **ppvObject);
        
        DECLSPEC_XFGVIRT(IUnknown, AddRef)
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            __RPC__in IOfflineFilesSyncErrorItemInfo * This);
        
        DECLSPEC_XFGVIRT(IUnknown, Release)
        ULONG ( STDMETHODCALLTYPE *Release )( 
            __RPC__in IOfflineFilesSyncErrorItemInfo * This);
        
        DECLSPEC_XFGVIRT(IOfflineFilesSyncErrorItemInfo, GetFileAttributes)
        HRESULT ( STDMETHODCALLTYPE *GetFileAttributes )( 
            __RPC__in IOfflineFilesSyncErrorItemInfo * This,
            /* [out] */ __RPC__out DWORD *pdwAttributes);
        
        DECLSPEC_XFGVIRT(IOfflineFilesSyncErrorItemInfo, GetFileTimes)
        HRESULT ( STDMETHODCALLTYPE *GetFileTimes )( 
            __RPC__in IOfflineFilesSyncErrorItemInfo * This,
            /* [out] */ __RPC__out FILETIME *pftLastWrite,
            /* [out] */ __RPC__out FILETIME *pftChange);
        
        DECLSPEC_XFGVIRT(IOfflineFilesSyncErrorItemInfo, GetFileSize)
        HRESULT ( STDMETHODCALLTYPE *GetFileSize )( 
            __RPC__in IOfflineFilesSyncErrorItemInfo * This,
            /* [out] */ __RPC__out LARGE_INTEGER *pSize);
        
        END_INTERFACE
    } IOfflineFilesSyncErrorItemInfoVtbl;

    interface IOfflineFilesSyncErrorItemInfo
    {
        CONST_VTBL struct IOfflineFilesSyncErrorItemInfoVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IOfflineFilesSyncErrorItemInfo_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IOfflineFilesSyncErrorItemInfo_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IOfflineFilesSyncErrorItemInfo_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IOfflineFilesSyncErrorItemInfo_GetFileAttributes(This,pdwAttributes)	\
    ( (This)->lpVtbl -> GetFileAttributes(This,pdwAttributes) ) 

#define IOfflineFilesSyncErrorItemInfo_GetFileTimes(This,pftLastWrite,pftChange)	\
    ( (This)->lpVtbl -> GetFileTimes(This,pftLastWrite,pftChange) ) 

#define IOfflineFilesSyncErrorItemInfo_GetFileSize(This,pSize)	\
    ( (This)->lpVtbl -> GetFileSize(This,pSize) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __IOfflineFilesSyncErrorItemInfo_INTERFACE_DEFINED__ */


#ifndef __IOfflineFilesSyncErrorInfo_INTERFACE_DEFINED__
#define __IOfflineFilesSyncErrorInfo_INTERFACE_DEFINED__

/* interface IOfflineFilesSyncErrorInfo */
/* [helpstring][uuid][object] */ 


EXTERN_C const IID IID_IOfflineFilesSyncErrorInfo;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("59F95E46-EB54-49d1-BE76-DE95458D01B0")
    IOfflineFilesSyncErrorInfo : public IOfflineFilesErrorInfo
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE GetSyncOperation( 
            /* [out] */ __RPC__out OFFLINEFILES_SYNC_OPERATION *pSyncOp) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetItemChangeFlags( 
            /* [out] */ __RPC__out DWORD *pdwItemChangeFlags) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE InfoEnumerated( 
            /* [out] */ __RPC__out BOOL *pbLocalEnumerated,
            /* [out] */ __RPC__out BOOL *pbRemoteEnumerated,
            /* [out] */ __RPC__out BOOL *pbOriginalEnumerated) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE InfoAvailable( 
            /* [out] */ __RPC__out BOOL *pbLocalInfo,
            /* [out] */ __RPC__out BOOL *pbRemoteInfo,
            /* [out] */ __RPC__out BOOL *pbOriginalInfo) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetLocalInfo( 
            /* [out] */ __RPC__deref_out_opt IOfflineFilesSyncErrorItemInfo **ppInfo) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetRemoteInfo( 
            /* [out] */ __RPC__deref_out_opt IOfflineFilesSyncErrorItemInfo **ppInfo) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetOriginalInfo( 
            /* [out] */ __RPC__deref_out_opt IOfflineFilesSyncErrorItemInfo **ppInfo) = 0;
        
    };
    
    
#else 	/* C style interface */

    typedef struct IOfflineFilesSyncErrorInfoVtbl
    {
        BEGIN_INTERFACE
        
        DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            __RPC__in IOfflineFilesSyncErrorInfo * This,
            /* [in] */ __RPC__in REFIID riid,
            /* [annotation][iid_is][out] */ 
            _COM_Outptr_  void **ppvObject);
        
        DECLSPEC_XFGVIRT(IUnknown, AddRef)
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            __RPC__in IOfflineFilesSyncErrorInfo * This);
        
        DECLSPEC_XFGVIRT(IUnknown, Release)
        ULONG ( STDMETHODCALLTYPE *Release )( 
            __RPC__in IOfflineFilesSyncErrorInfo * This);
        
        DECLSPEC_XFGVIRT(IOfflineFilesErrorInfo, GetRawData)
        HRESULT ( STDMETHODCALLTYPE *GetRawData )( 
            __RPC__in IOfflineFilesSyncErrorInfo * This,
            /* [out] */ __RPC__deref_out_opt BYTE_BLOB **ppBlob);
        
        DECLSPEC_XFGVIRT(IOfflineFilesErrorInfo, GetDescription)
        HRESULT ( STDMETHODCALLTYPE *GetDescription )( 
            __RPC__in IOfflineFilesSyncErrorInfo * This,
            /* [out] */ __RPC__deref_out_opt LPWSTR *ppszDescription);
        
        DECLSPEC_XFGVIRT(IOfflineFilesSyncErrorInfo, GetSyncOperation)
        HRESULT ( STDMETHODCALLTYPE *GetSyncOperation )( 
            __RPC__in IOfflineFilesSyncErrorInfo * This,
            /* [out] */ __RPC__out OFFLINEFILES_SYNC_OPERATION *pSyncOp);
        
        DECLSPEC_XFGVIRT(IOfflineFilesSyncErrorInfo, GetItemChangeFlags)
        HRESULT ( STDMETHODCALLTYPE *GetItemChangeFlags )( 
            __RPC__in IOfflineFilesSyncErrorInfo * This,
            /* [out] */ __RPC__out DWORD *pdwItemChangeFlags);
        
        DECLSPEC_XFGVIRT(IOfflineFilesSyncErrorInfo, InfoEnumerated)
        HRESULT ( STDMETHODCALLTYPE *InfoEnumerated )( 
            __RPC__in IOfflineFilesSyncErrorInfo * This,
            /* [out] */ __RPC__out BOOL *pbLocalEnumerated,
            /* [out] */ __RPC__out BOOL *pbRemoteEnumerated,
            /* [out] */ __RPC__out BOOL *pbOriginalEnumerated);
        
        DECLSPEC_XFGVIRT(IOfflineFilesSyncErrorInfo, InfoAvailable)
        HRESULT ( STDMETHODCALLTYPE *InfoAvailable )( 
            __RPC__in IOfflineFilesSyncErrorInfo * This,
            /* [out] */ __RPC__out BOOL *pbLocalInfo,
            /* [out] */ __RPC__out BOOL *pbRemoteInfo,
            /* [out] */ __RPC__out BOOL *pbOriginalInfo);
        
        DECLSPEC_XFGVIRT(IOfflineFilesSyncErrorInfo, GetLocalInfo)
        HRESULT ( STDMETHODCALLTYPE *GetLocalInfo )( 
            __RPC__in IOfflineFilesSyncErrorInfo * This,
            /* [out] */ __RPC__deref_out_opt IOfflineFilesSyncErrorItemInfo **ppInfo);
        
        DECLSPEC_XFGVIRT(IOfflineFilesSyncErrorInfo, GetRemoteInfo)
        HRESULT ( STDMETHODCALLTYPE *GetRemoteInfo )( 
            __RPC__in IOfflineFilesSyncErrorInfo * This,
            /* [out] */ __RPC__deref_out_opt IOfflineFilesSyncErrorItemInfo **ppInfo);
        
        DECLSPEC_XFGVIRT(IOfflineFilesSyncErrorInfo, GetOriginalInfo)
        HRESULT ( STDMETHODCALLTYPE *GetOriginalInfo )( 
            __RPC__in IOfflineFilesSyncErrorInfo * This,
            /* [out] */ __RPC__deref_out_opt IOfflineFilesSyncErrorItemInfo **ppInfo);
        
        END_INTERFACE
    } IOfflineFilesSyncErrorInfoVtbl;

    interface IOfflineFilesSyncErrorInfo
    {
        CONST_VTBL struct IOfflineFilesSyncErrorInfoVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IOfflineFilesSyncErrorInfo_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IOfflineFilesSyncErrorInfo_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IOfflineFilesSyncErrorInfo_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IOfflineFilesSyncErrorInfo_GetRawData(This,ppBlob)	\
    ( (This)->lpVtbl -> GetRawData(This,ppBlob) ) 

#define IOfflineFilesSyncErrorInfo_GetDescription(This,ppszDescription)	\
    ( (This)->lpVtbl -> GetDescription(This,ppszDescription) ) 


#define IOfflineFilesSyncErrorInfo_GetSyncOperation(This,pSyncOp)	\
    ( (This)->lpVtbl -> GetSyncOperation(This,pSyncOp) ) 

#define IOfflineFilesSyncErrorInfo_GetItemChangeFlags(This,pdwItemChangeFlags)	\
    ( (This)->lpVtbl -> GetItemChangeFlags(This,pdwItemChangeFlags) ) 

#define IOfflineFilesSyncErrorInfo_InfoEnumerated(This,pbLocalEnumerated,pbRemoteEnumerated,pbOriginalEnumerated)	\
    ( (This)->lpVtbl -> InfoEnumerated(This,pbLocalEnumerated,pbRemoteEnumerated,pbOriginalEnumerated) ) 

#define IOfflineFilesSyncErrorInfo_InfoAvailable(This,pbLocalInfo,pbRemoteInfo,pbOriginalInfo)	\
    ( (This)->lpVtbl -> InfoAvailable(This,pbLocalInfo,pbRemoteInfo,pbOriginalInfo) ) 

#define IOfflineFilesSyncErrorInfo_GetLocalInfo(This,ppInfo)	\
    ( (This)->lpVtbl -> GetLocalInfo(This,ppInfo) ) 

#define IOfflineFilesSyncErrorInfo_GetRemoteInfo(This,ppInfo)	\
    ( (This)->lpVtbl -> GetRemoteInfo(This,ppInfo) ) 

#define IOfflineFilesSyncErrorInfo_GetOriginalInfo(This,ppInfo)	\
    ( (This)->lpVtbl -> GetOriginalInfo(This,ppInfo) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __IOfflineFilesSyncErrorInfo_INTERFACE_DEFINED__ */


#ifndef __IOfflineFilesProgress_INTERFACE_DEFINED__
#define __IOfflineFilesProgress_INTERFACE_DEFINED__

/* interface IOfflineFilesProgress */
/* [helpstring][uuid][object] */ 


EXTERN_C const IID IID_IOfflineFilesProgress;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("FAD63237-C55B-4911-9850-BCF96D4C979E")
    IOfflineFilesProgress : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE Begin( 
            /* [out] */ __RPC__out BOOL *pbAbort) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE QueryAbort( 
            /* [out] */ __RPC__out BOOL *pbAbort) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE End( 
            /* [in] */ HRESULT hrResult) = 0;
        
    };
    
    
#else 	/* C style interface */

    typedef struct IOfflineFilesProgressVtbl
    {
        BEGIN_INTERFACE
        
        DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            __RPC__in IOfflineFilesProgress * This,
            /* [in] */ __RPC__in REFIID riid,
            /* [annotation][iid_is][out] */ 
            _COM_Outptr_  void **ppvObject);
        
        DECLSPEC_XFGVIRT(IUnknown, AddRef)
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            __RPC__in IOfflineFilesProgress * This);
        
        DECLSPEC_XFGVIRT(IUnknown, Release)
        ULONG ( STDMETHODCALLTYPE *Release )( 
            __RPC__in IOfflineFilesProgress * This);
        
        DECLSPEC_XFGVIRT(IOfflineFilesProgress, Begin)
        HRESULT ( STDMETHODCALLTYPE *Begin )( 
            __RPC__in IOfflineFilesProgress * This,
            /* [out] */ __RPC__out BOOL *pbAbort);
        
        DECLSPEC_XFGVIRT(IOfflineFilesProgress, QueryAbort)
        HRESULT ( STDMETHODCALLTYPE *QueryAbort )( 
            __RPC__in IOfflineFilesProgress * This,
            /* [out] */ __RPC__out BOOL *pbAbort);
        
        DECLSPEC_XFGVIRT(IOfflineFilesProgress, End)
        HRESULT ( STDMETHODCALLTYPE *End )( 
            __RPC__in IOfflineFilesProgress * This,
            /* [in] */ HRESULT hrResult);
        
        END_INTERFACE
    } IOfflineFilesProgressVtbl;

    interface IOfflineFilesProgress
    {
        CONST_VTBL struct IOfflineFilesProgressVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IOfflineFilesProgress_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IOfflineFilesProgress_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IOfflineFilesProgress_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IOfflineFilesProgress_Begin(This,pbAbort)	\
    ( (This)->lpVtbl -> Begin(This,pbAbort) ) 

#define IOfflineFilesProgress_QueryAbort(This,pbAbort)	\
    ( (This)->lpVtbl -> QueryAbort(This,pbAbort) ) 

#define IOfflineFilesProgress_End(This,hrResult)	\
    ( (This)->lpVtbl -> End(This,hrResult) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __IOfflineFilesProgress_INTERFACE_DEFINED__ */


#ifndef __IOfflineFilesSimpleProgress_INTERFACE_DEFINED__
#define __IOfflineFilesSimpleProgress_INTERFACE_DEFINED__

/* interface IOfflineFilesSimpleProgress */
/* [helpstring][uuid][object] */ 


EXTERN_C const IID IID_IOfflineFilesSimpleProgress;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("C34F7F9B-C43D-4f9d-A776-C0EB6DE5D401")
    IOfflineFilesSimpleProgress : public IOfflineFilesProgress
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE ItemBegin( 
            /* [string][in] */ __RPC__in_string LPCWSTR pszFile,
            /* [out] */ __RPC__out OFFLINEFILES_OP_RESPONSE *pResponse) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE ItemResult( 
            /* [string][in] */ __RPC__in_string LPCWSTR pszFile,
            /* [in] */ HRESULT hrResult,
            /* [out] */ __RPC__out OFFLINEFILES_OP_RESPONSE *pResponse) = 0;
        
    };
    
    
#else 	/* C style interface */

    typedef struct IOfflineFilesSimpleProgressVtbl
    {
        BEGIN_INTERFACE
        
        DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            __RPC__in IOfflineFilesSimpleProgress * This,
            /* [in] */ __RPC__in REFIID riid,
            /* [annotation][iid_is][out] */ 
            _COM_Outptr_  void **ppvObject);
        
        DECLSPEC_XFGVIRT(IUnknown, AddRef)
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            __RPC__in IOfflineFilesSimpleProgress * This);
        
        DECLSPEC_XFGVIRT(IUnknown, Release)
        ULONG ( STDMETHODCALLTYPE *Release )( 
            __RPC__in IOfflineFilesSimpleProgress * This);
        
        DECLSPEC_XFGVIRT(IOfflineFilesProgress, Begin)
        HRESULT ( STDMETHODCALLTYPE *Begin )( 
            __RPC__in IOfflineFilesSimpleProgress * This,
            /* [out] */ __RPC__out BOOL *pbAbort);
        
        DECLSPEC_XFGVIRT(IOfflineFilesProgress, QueryAbort)
        HRESULT ( STDMETHODCALLTYPE *QueryAbort )( 
            __RPC__in IOfflineFilesSimpleProgress * This,
            /* [out] */ __RPC__out BOOL *pbAbort);
        
        DECLSPEC_XFGVIRT(IOfflineFilesProgress, End)
        HRESULT ( STDMETHODCALLTYPE *End )( 
            __RPC__in IOfflineFilesSimpleProgress * This,
            /* [in] */ HRESULT hrResult);
        
        DECLSPEC_XFGVIRT(IOfflineFilesSimpleProgress, ItemBegin)
        HRESULT ( STDMETHODCALLTYPE *ItemBegin )( 
            __RPC__in IOfflineFilesSimpleProgress * This,
            /* [string][in] */ __RPC__in_string LPCWSTR pszFile,
            /* [out] */ __RPC__out OFFLINEFILES_OP_RESPONSE *pResponse);
        
        DECLSPEC_XFGVIRT(IOfflineFilesSimpleProgress, ItemResult)
        HRESULT ( STDMETHODCALLTYPE *ItemResult )( 
            __RPC__in IOfflineFilesSimpleProgress * This,
            /* [string][in] */ __RPC__in_string LPCWSTR pszFile,
            /* [in] */ HRESULT hrResult,
            /* [out] */ __RPC__out OFFLINEFILES_OP_RESPONSE *pResponse);
        
        END_INTERFACE
    } IOfflineFilesSimpleProgressVtbl;

    interface IOfflineFilesSimpleProgress
    {
        CONST_VTBL struct IOfflineFilesSimpleProgressVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IOfflineFilesSimpleProgress_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IOfflineFilesSimpleProgress_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IOfflineFilesSimpleProgress_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IOfflineFilesSimpleProgress_Begin(This,pbAbort)	\
    ( (This)->lpVtbl -> Begin(This,pbAbort) ) 

#define IOfflineFilesSimpleProgress_QueryAbort(This,pbAbort)	\
    ( (This)->lpVtbl -> QueryAbort(This,pbAbort) ) 

#define IOfflineFilesSimpleProgress_End(This,hrResult)	\
    ( (This)->lpVtbl -> End(This,hrResult) ) 


#define IOfflineFilesSimpleProgress_ItemBegin(This,pszFile,pResponse)	\
    ( (This)->lpVtbl -> ItemBegin(This,pszFile,pResponse) ) 

#define IOfflineFilesSimpleProgress_ItemResult(This,pszFile,hrResult,pResponse)	\
    ( (This)->lpVtbl -> ItemResult(This,pszFile,hrResult,pResponse) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __IOfflineFilesSimpleProgress_INTERFACE_DEFINED__ */


#ifndef __IOfflineFilesSyncProgress_INTERFACE_DEFINED__
#define __IOfflineFilesSyncProgress_INTERFACE_DEFINED__

/* interface IOfflineFilesSyncProgress */
/* [helpstring][uuid][object] */ 


EXTERN_C const IID IID_IOfflineFilesSyncProgress;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("6931F49A-6FC7-4c1b-B265-56793FC451B7")
    IOfflineFilesSyncProgress : public IOfflineFilesProgress
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE SyncItemBegin( 
            /* [string][in] */ __RPC__in_string LPCWSTR pszFile,
            /* [out] */ __RPC__out OFFLINEFILES_OP_RESPONSE *pResponse) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE SyncItemResult( 
            /* [string][in] */ __RPC__in_string LPCWSTR pszFile,
            /* [in] */ HRESULT hrResult,
            /* [in] */ __RPC__in_opt IOfflineFilesSyncErrorInfo *pErrorInfo,
            /* [out] */ __RPC__out OFFLINEFILES_OP_RESPONSE *pResponse) = 0;
        
    };
    
    
#else 	/* C style interface */

    typedef struct IOfflineFilesSyncProgressVtbl
    {
        BEGIN_INTERFACE
        
        DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            __RPC__in IOfflineFilesSyncProgress * This,
            /* [in] */ __RPC__in REFIID riid,
            /* [annotation][iid_is][out] */ 
            _COM_Outptr_  void **ppvObject);
        
        DECLSPEC_XFGVIRT(IUnknown, AddRef)
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            __RPC__in IOfflineFilesSyncProgress * This);
        
        DECLSPEC_XFGVIRT(IUnknown, Release)
        ULONG ( STDMETHODCALLTYPE *Release )( 
            __RPC__in IOfflineFilesSyncProgress * This);
        
        DECLSPEC_XFGVIRT(IOfflineFilesProgress, Begin)
        HRESULT ( STDMETHODCALLTYPE *Begin )( 
            __RPC__in IOfflineFilesSyncProgress * This,
            /* [out] */ __RPC__out BOOL *pbAbort);
        
        DECLSPEC_XFGVIRT(IOfflineFilesProgress, QueryAbort)
        HRESULT ( STDMETHODCALLTYPE *QueryAbort )( 
            __RPC__in IOfflineFilesSyncProgress * This,
            /* [out] */ __RPC__out BOOL *pbAbort);
        
        DECLSPEC_XFGVIRT(IOfflineFilesProgress, End)
        HRESULT ( STDMETHODCALLTYPE *End )( 
            __RPC__in IOfflineFilesSyncProgress * This,
            /* [in] */ HRESULT hrResult);
        
        DECLSPEC_XFGVIRT(IOfflineFilesSyncProgress, SyncItemBegin)
        HRESULT ( STDMETHODCALLTYPE *SyncItemBegin )( 
            __RPC__in IOfflineFilesSyncProgress * This,
            /* [string][in] */ __RPC__in_string LPCWSTR pszFile,
            /* [out] */ __RPC__out OFFLINEFILES_OP_RESPONSE *pResponse);
        
        DECLSPEC_XFGVIRT(IOfflineFilesSyncProgress, SyncItemResult)
        HRESULT ( STDMETHODCALLTYPE *SyncItemResult )( 
            __RPC__in IOfflineFilesSyncProgress * This,
            /* [string][in] */ __RPC__in_string LPCWSTR pszFile,
            /* [in] */ HRESULT hrResult,
            /* [in] */ __RPC__in_opt IOfflineFilesSyncErrorInfo *pErrorInfo,
            /* [out] */ __RPC__out OFFLINEFILES_OP_RESPONSE *pResponse);
        
        END_INTERFACE
    } IOfflineFilesSyncProgressVtbl;

    interface IOfflineFilesSyncProgress
    {
        CONST_VTBL struct IOfflineFilesSyncProgressVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IOfflineFilesSyncProgress_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IOfflineFilesSyncProgress_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IOfflineFilesSyncProgress_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IOfflineFilesSyncProgress_Begin(This,pbAbort)	\
    ( (This)->lpVtbl -> Begin(This,pbAbort) ) 

#define IOfflineFilesSyncProgress_QueryAbort(This,pbAbort)	\
    ( (This)->lpVtbl -> QueryAbort(This,pbAbort) ) 

#define IOfflineFilesSyncProgress_End(This,hrResult)	\
    ( (This)->lpVtbl -> End(This,hrResult) ) 


#define IOfflineFilesSyncProgress_SyncItemBegin(This,pszFile,pResponse)	\
    ( (This)->lpVtbl -> SyncItemBegin(This,pszFile,pResponse) ) 

#define IOfflineFilesSyncProgress_SyncItemResult(This,pszFile,hrResult,pErrorInfo,pResponse)	\
    ( (This)->lpVtbl -> SyncItemResult(This,pszFile,hrResult,pErrorInfo,pResponse) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __IOfflineFilesSyncProgress_INTERFACE_DEFINED__ */


#ifndef __IOfflineFilesSyncConflictHandler_INTERFACE_DEFINED__
#define __IOfflineFilesSyncConflictHandler_INTERFACE_DEFINED__

/* interface IOfflineFilesSyncConflictHandler */
/* [helpstring][uuid][object] */ 


EXTERN_C const IID IID_IOfflineFilesSyncConflictHandler;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("B6DD5092-C65C-46b6-97B8-FADD08E7E1BE")
    IOfflineFilesSyncConflictHandler : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE ResolveConflict( 
            /* [string][in] */ __RPC__in_string LPCWSTR pszPath,
            /* [in] */ DWORD fStateKnown,
            /* [in] */ OFFLINEFILES_SYNC_STATE state,
            /* [in] */ DWORD fChangeDetails,
            /* [out] */ __RPC__out OFFLINEFILES_SYNC_CONFLICT_RESOLVE *pConflictResolution,
            /* [string][out] */ __RPC__deref_out_opt_string LPWSTR *ppszNewName) = 0;
        
    };
    
    
#else 	/* C style interface */

    typedef struct IOfflineFilesSyncConflictHandlerVtbl
    {
        BEGIN_INTERFACE
        
        DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            __RPC__in IOfflineFilesSyncConflictHandler * This,
            /* [in] */ __RPC__in REFIID riid,
            /* [annotation][iid_is][out] */ 
            _COM_Outptr_  void **ppvObject);
        
        DECLSPEC_XFGVIRT(IUnknown, AddRef)
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            __RPC__in IOfflineFilesSyncConflictHandler * This);
        
        DECLSPEC_XFGVIRT(IUnknown, Release)
        ULONG ( STDMETHODCALLTYPE *Release )( 
            __RPC__in IOfflineFilesSyncConflictHandler * This);
        
        DECLSPEC_XFGVIRT(IOfflineFilesSyncConflictHandler, ResolveConflict)
        HRESULT ( STDMETHODCALLTYPE *ResolveConflict )( 
            __RPC__in IOfflineFilesSyncConflictHandler * This,
            /* [string][in] */ __RPC__in_string LPCWSTR pszPath,
            /* [in] */ DWORD fStateKnown,
            /* [in] */ OFFLINEFILES_SYNC_STATE state,
            /* [in] */ DWORD fChangeDetails,
            /* [out] */ __RPC__out OFFLINEFILES_SYNC_CONFLICT_RESOLVE *pConflictResolution,
            /* [string][out] */ __RPC__deref_out_opt_string LPWSTR *ppszNewName);
        
        END_INTERFACE
    } IOfflineFilesSyncConflictHandlerVtbl;

    interface IOfflineFilesSyncConflictHandler
    {
        CONST_VTBL struct IOfflineFilesSyncConflictHandlerVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IOfflineFilesSyncConflictHandler_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IOfflineFilesSyncConflictHandler_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IOfflineFilesSyncConflictHandler_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IOfflineFilesSyncConflictHandler_ResolveConflict(This,pszPath,fStateKnown,state,fChangeDetails,pConflictResolution,ppszNewName)	\
    ( (This)->lpVtbl -> ResolveConflict(This,pszPath,fStateKnown,state,fChangeDetails,pConflictResolution,ppszNewName) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __IOfflineFilesSyncConflictHandler_INTERFACE_DEFINED__ */


#ifndef __IOfflineFilesItemFilter_INTERFACE_DEFINED__
#define __IOfflineFilesItemFilter_INTERFACE_DEFINED__

/* interface IOfflineFilesItemFilter */
/* [helpstring][uuid][object] */ 


EXTERN_C const IID IID_IOfflineFilesItemFilter;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("F4B5A26C-DC05-4f20-ADA4-551F1077BE5C")
    IOfflineFilesItemFilter : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE GetFilterFlags( 
            /* [out] */ __RPC__out ULONGLONG *pullFlags,
            /* [out] */ __RPC__out ULONGLONG *pullMask) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetTimeFilter( 
            /* [out] */ __RPC__out FILETIME *pftTime,
            /* [out] */ __RPC__out BOOL *pbEvalTimeOfDay,
            /* [out] */ __RPC__out OFFLINEFILES_ITEM_TIME *pTimeType,
            /* [out] */ __RPC__out OFFLINEFILES_COMPARE *pCompare) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetPatternFilter( 
            /* [size_is][string][out] */ __RPC__out_ecount_full_string(cchPattern) LPWSTR pszPattern,
            /* [in] */ ULONG cchPattern) = 0;
        
    };
    
    
#else 	/* C style interface */

    typedef struct IOfflineFilesItemFilterVtbl
    {
        BEGIN_INTERFACE
        
        DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            __RPC__in IOfflineFilesItemFilter * This,
            /* [in] */ __RPC__in REFIID riid,
            /* [annotation][iid_is][out] */ 
            _COM_Outptr_  void **ppvObject);
        
        DECLSPEC_XFGVIRT(IUnknown, AddRef)
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            __RPC__in IOfflineFilesItemFilter * This);
        
        DECLSPEC_XFGVIRT(IUnknown, Release)
        ULONG ( STDMETHODCALLTYPE *Release )( 
            __RPC__in IOfflineFilesItemFilter * This);
        
        DECLSPEC_XFGVIRT(IOfflineFilesItemFilter, GetFilterFlags)
        HRESULT ( STDMETHODCALLTYPE *GetFilterFlags )( 
            __RPC__in IOfflineFilesItemFilter * This,
            /* [out] */ __RPC__out ULONGLONG *pullFlags,
            /* [out] */ __RPC__out ULONGLONG *pullMask);
        
        DECLSPEC_XFGVIRT(IOfflineFilesItemFilter, GetTimeFilter)
        HRESULT ( STDMETHODCALLTYPE *GetTimeFilter )( 
            __RPC__in IOfflineFilesItemFilter * This,
            /* [out] */ __RPC__out FILETIME *pftTime,
            /* [out] */ __RPC__out BOOL *pbEvalTimeOfDay,
            /* [out] */ __RPC__out OFFLINEFILES_ITEM_TIME *pTimeType,
            /* [out] */ __RPC__out OFFLINEFILES_COMPARE *pCompare);
        
        DECLSPEC_XFGVIRT(IOfflineFilesItemFilter, GetPatternFilter)
        HRESULT ( STDMETHODCALLTYPE *GetPatternFilter )( 
            __RPC__in IOfflineFilesItemFilter * This,
            /* [size_is][string][out] */ __RPC__out_ecount_full_string(cchPattern) LPWSTR pszPattern,
            /* [in] */ ULONG cchPattern);
        
        END_INTERFACE
    } IOfflineFilesItemFilterVtbl;

    interface IOfflineFilesItemFilter
    {
        CONST_VTBL struct IOfflineFilesItemFilterVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IOfflineFilesItemFilter_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IOfflineFilesItemFilter_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IOfflineFilesItemFilter_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IOfflineFilesItemFilter_GetFilterFlags(This,pullFlags,pullMask)	\
    ( (This)->lpVtbl -> GetFilterFlags(This,pullFlags,pullMask) ) 

#define IOfflineFilesItemFilter_GetTimeFilter(This,pftTime,pbEvalTimeOfDay,pTimeType,pCompare)	\
    ( (This)->lpVtbl -> GetTimeFilter(This,pftTime,pbEvalTimeOfDay,pTimeType,pCompare) ) 

#define IOfflineFilesItemFilter_GetPatternFilter(This,pszPattern,cchPattern)	\
    ( (This)->lpVtbl -> GetPatternFilter(This,pszPattern,cchPattern) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __IOfflineFilesItemFilter_INTERFACE_DEFINED__ */


#ifndef __IOfflineFilesItem_INTERFACE_DEFINED__
#define __IOfflineFilesItem_INTERFACE_DEFINED__

/* interface IOfflineFilesItem */
/* [unique][helpstring][uuid][object] */ 


EXTERN_C const IID IID_IOfflineFilesItem;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("4a753da6-e044-4f12-a718-5d14d079a906")
    IOfflineFilesItem : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE GetItemType( 
            /* [out] */ __RPC__out OFFLINEFILES_ITEM_TYPE *pItemType) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetPath( 
            /* [string][out] */ __RPC__deref_out_opt_string LPWSTR *ppszPath) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetParentItem( 
            /* [out] */ __RPC__deref_out_opt IOfflineFilesItem **ppItem) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE Refresh( 
            /* [in] */ DWORD dwQueryFlags) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE IsMarkedForDeletion( 
            /* [out] */ __RPC__out BOOL *pbMarkedForDeletion) = 0;
        
    };
    
    
#else 	/* C style interface */

    typedef struct IOfflineFilesItemVtbl
    {
        BEGIN_INTERFACE
        
        DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            __RPC__in IOfflineFilesItem * This,
            /* [in] */ __RPC__in REFIID riid,
            /* [annotation][iid_is][out] */ 
            _COM_Outptr_  void **ppvObject);
        
        DECLSPEC_XFGVIRT(IUnknown, AddRef)
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            __RPC__in IOfflineFilesItem * This);
        
        DECLSPEC_XFGVIRT(IUnknown, Release)
        ULONG ( STDMETHODCALLTYPE *Release )( 
            __RPC__in IOfflineFilesItem * This);
        
        DECLSPEC_XFGVIRT(IOfflineFilesItem, GetItemType)
        HRESULT ( STDMETHODCALLTYPE *GetItemType )( 
            __RPC__in IOfflineFilesItem * This,
            /* [out] */ __RPC__out OFFLINEFILES_ITEM_TYPE *pItemType);
        
        DECLSPEC_XFGVIRT(IOfflineFilesItem, GetPath)
        HRESULT ( STDMETHODCALLTYPE *GetPath )( 
            __RPC__in IOfflineFilesItem * This,
            /* [string][out] */ __RPC__deref_out_opt_string LPWSTR *ppszPath);
        
        DECLSPEC_XFGVIRT(IOfflineFilesItem, GetParentItem)
        HRESULT ( STDMETHODCALLTYPE *GetParentItem )( 
            __RPC__in IOfflineFilesItem * This,
            /* [out] */ __RPC__deref_out_opt IOfflineFilesItem **ppItem);
        
        DECLSPEC_XFGVIRT(IOfflineFilesItem, Refresh)
        HRESULT ( STDMETHODCALLTYPE *Refresh )( 
            __RPC__in IOfflineFilesItem * This,
            /* [in] */ DWORD dwQueryFlags);
        
        DECLSPEC_XFGVIRT(IOfflineFilesItem, IsMarkedForDeletion)
        HRESULT ( STDMETHODCALLTYPE *IsMarkedForDeletion )( 
            __RPC__in IOfflineFilesItem * This,
            /* [out] */ __RPC__out BOOL *pbMarkedForDeletion);
        
        END_INTERFACE
    } IOfflineFilesItemVtbl;

    interface IOfflineFilesItem
    {
        CONST_VTBL struct IOfflineFilesItemVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IOfflineFilesItem_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IOfflineFilesItem_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IOfflineFilesItem_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IOfflineFilesItem_GetItemType(This,pItemType)	\
    ( (This)->lpVtbl -> GetItemType(This,pItemType) ) 

#define IOfflineFilesItem_GetPath(This,ppszPath)	\
    ( (This)->lpVtbl -> GetPath(This,ppszPath) ) 

#define IOfflineFilesItem_GetParentItem(This,ppItem)	\
    ( (This)->lpVtbl -> GetParentItem(This,ppItem) ) 

#define IOfflineFilesItem_Refresh(This,dwQueryFlags)	\
    ( (This)->lpVtbl -> Refresh(This,dwQueryFlags) ) 

#define IOfflineFilesItem_IsMarkedForDeletion(This,pbMarkedForDeletion)	\
    ( (This)->lpVtbl -> IsMarkedForDeletion(This,pbMarkedForDeletion) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __IOfflineFilesItem_INTERFACE_DEFINED__ */


#ifndef __IOfflineFilesServerItem_INTERFACE_DEFINED__
#define __IOfflineFilesServerItem_INTERFACE_DEFINED__

/* interface IOfflineFilesServerItem */
/* [unique][helpstring][uuid][object] */ 


EXTERN_C const IID IID_IOfflineFilesServerItem;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("9B1C9576-A92B-4151-8E9E-7C7B3EC2E016")
    IOfflineFilesServerItem : public IOfflineFilesItem
    {
    public:
    };
    
    
#else 	/* C style interface */

    typedef struct IOfflineFilesServerItemVtbl
    {
        BEGIN_INTERFACE
        
        DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            __RPC__in IOfflineFilesServerItem * This,
            /* [in] */ __RPC__in REFIID riid,
            /* [annotation][iid_is][out] */ 
            _COM_Outptr_  void **ppvObject);
        
        DECLSPEC_XFGVIRT(IUnknown, AddRef)
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            __RPC__in IOfflineFilesServerItem * This);
        
        DECLSPEC_XFGVIRT(IUnknown, Release)
        ULONG ( STDMETHODCALLTYPE *Release )( 
            __RPC__in IOfflineFilesServerItem * This);
        
        DECLSPEC_XFGVIRT(IOfflineFilesItem, GetItemType)
        HRESULT ( STDMETHODCALLTYPE *GetItemType )( 
            __RPC__in IOfflineFilesServerItem * This,
            /* [out] */ __RPC__out OFFLINEFILES_ITEM_TYPE *pItemType);
        
        DECLSPEC_XFGVIRT(IOfflineFilesItem, GetPath)
        HRESULT ( STDMETHODCALLTYPE *GetPath )( 
            __RPC__in IOfflineFilesServerItem * This,
            /* [string][out] */ __RPC__deref_out_opt_string LPWSTR *ppszPath);
        
        DECLSPEC_XFGVIRT(IOfflineFilesItem, GetParentItem)
        HRESULT ( STDMETHODCALLTYPE *GetParentItem )( 
            __RPC__in IOfflineFilesServerItem * This,
            /* [out] */ __RPC__deref_out_opt IOfflineFilesItem **ppItem);
        
        DECLSPEC_XFGVIRT(IOfflineFilesItem, Refresh)
        HRESULT ( STDMETHODCALLTYPE *Refresh )( 
            __RPC__in IOfflineFilesServerItem * This,
            /* [in] */ DWORD dwQueryFlags);
        
        DECLSPEC_XFGVIRT(IOfflineFilesItem, IsMarkedForDeletion)
        HRESULT ( STDMETHODCALLTYPE *IsMarkedForDeletion )( 
            __RPC__in IOfflineFilesServerItem * This,
            /* [out] */ __RPC__out BOOL *pbMarkedForDeletion);
        
        END_INTERFACE
    } IOfflineFilesServerItemVtbl;

    interface IOfflineFilesServerItem
    {
        CONST_VTBL struct IOfflineFilesServerItemVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IOfflineFilesServerItem_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IOfflineFilesServerItem_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IOfflineFilesServerItem_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IOfflineFilesServerItem_GetItemType(This,pItemType)	\
    ( (This)->lpVtbl -> GetItemType(This,pItemType) ) 

#define IOfflineFilesServerItem_GetPath(This,ppszPath)	\
    ( (This)->lpVtbl -> GetPath(This,ppszPath) ) 

#define IOfflineFilesServerItem_GetParentItem(This,ppItem)	\
    ( (This)->lpVtbl -> GetParentItem(This,ppItem) ) 

#define IOfflineFilesServerItem_Refresh(This,dwQueryFlags)	\
    ( (This)->lpVtbl -> Refresh(This,dwQueryFlags) ) 

#define IOfflineFilesServerItem_IsMarkedForDeletion(This,pbMarkedForDeletion)	\
    ( (This)->lpVtbl -> IsMarkedForDeletion(This,pbMarkedForDeletion) ) 


#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __IOfflineFilesServerItem_INTERFACE_DEFINED__ */


#ifndef __IOfflineFilesShareItem_INTERFACE_DEFINED__
#define __IOfflineFilesShareItem_INTERFACE_DEFINED__

/* interface IOfflineFilesShareItem */
/* [unique][helpstring][uuid][object] */ 


EXTERN_C const IID IID_IOfflineFilesShareItem;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("BAB7E48D-4804-41b5-A44D-0F199B06B145")
    IOfflineFilesShareItem : public IOfflineFilesItem
    {
    public:
    };
    
    
#else 	/* C style interface */

    typedef struct IOfflineFilesShareItemVtbl
    {
        BEGIN_INTERFACE
        
        DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            __RPC__in IOfflineFilesShareItem * This,
            /* [in] */ __RPC__in REFIID riid,
            /* [annotation][iid_is][out] */ 
            _COM_Outptr_  void **ppvObject);
        
        DECLSPEC_XFGVIRT(IUnknown, AddRef)
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            __RPC__in IOfflineFilesShareItem * This);
        
        DECLSPEC_XFGVIRT(IUnknown, Release)
        ULONG ( STDMETHODCALLTYPE *Release )( 
            __RPC__in IOfflineFilesShareItem * This);
        
        DECLSPEC_XFGVIRT(IOfflineFilesItem, GetItemType)
        HRESULT ( STDMETHODCALLTYPE *GetItemType )( 
            __RPC__in IOfflineFilesShareItem * This,
            /* [out] */ __RPC__out OFFLINEFILES_ITEM_TYPE *pItemType);
        
        DECLSPEC_XFGVIRT(IOfflineFilesItem, GetPath)
        HRESULT ( STDMETHODCALLTYPE *GetPath )( 
            __RPC__in IOfflineFilesShareItem * This,
            /* [string][out] */ __RPC__deref_out_opt_string LPWSTR *ppszPath);
        
        DECLSPEC_XFGVIRT(IOfflineFilesItem, GetParentItem)
        HRESULT ( STDMETHODCALLTYPE *GetParentItem )( 
            __RPC__in IOfflineFilesShareItem * This,
            /* [out] */ __RPC__deref_out_opt IOfflineFilesItem **ppItem);
        
        DECLSPEC_XFGVIRT(IOfflineFilesItem, Refresh)
        HRESULT ( STDMETHODCALLTYPE *Refresh )( 
            __RPC__in IOfflineFilesShareItem * This,
            /* [in] */ DWORD dwQueryFlags);
        
        DECLSPEC_XFGVIRT(IOfflineFilesItem, IsMarkedForDeletion)
        HRESULT ( STDMETHODCALLTYPE *IsMarkedForDeletion )( 
            __RPC__in IOfflineFilesShareItem * This,
            /* [out] */ __RPC__out BOOL *pbMarkedForDeletion);
        
        END_INTERFACE
    } IOfflineFilesShareItemVtbl;

    interface IOfflineFilesShareItem
    {
        CONST_VTBL struct IOfflineFilesShareItemVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IOfflineFilesShareItem_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IOfflineFilesShareItem_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IOfflineFilesShareItem_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IOfflineFilesShareItem_GetItemType(This,pItemType)	\
    ( (This)->lpVtbl -> GetItemType(This,pItemType) ) 

#define IOfflineFilesShareItem_GetPath(This,ppszPath)	\
    ( (This)->lpVtbl -> GetPath(This,ppszPath) ) 

#define IOfflineFilesShareItem_GetParentItem(This,ppItem)	\
    ( (This)->lpVtbl -> GetParentItem(This,ppItem) ) 

#define IOfflineFilesShareItem_Refresh(This,dwQueryFlags)	\
    ( (This)->lpVtbl -> Refresh(This,dwQueryFlags) ) 

#define IOfflineFilesShareItem_IsMarkedForDeletion(This,pbMarkedForDeletion)	\
    ( (This)->lpVtbl -> IsMarkedForDeletion(This,pbMarkedForDeletion) ) 


#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __IOfflineFilesShareItem_INTERFACE_DEFINED__ */


#ifndef __IOfflineFilesDirectoryItem_INTERFACE_DEFINED__
#define __IOfflineFilesDirectoryItem_INTERFACE_DEFINED__

/* interface IOfflineFilesDirectoryItem */
/* [unique][helpstring][uuid][object] */ 


EXTERN_C const IID IID_IOfflineFilesDirectoryItem;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("2273597A-A08C-4a00-A37A-C1AE4E9A1CFD")
    IOfflineFilesDirectoryItem : public IOfflineFilesItem
    {
    public:
    };
    
    
#else 	/* C style interface */

    typedef struct IOfflineFilesDirectoryItemVtbl
    {
        BEGIN_INTERFACE
        
        DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            __RPC__in IOfflineFilesDirectoryItem * This,
            /* [in] */ __RPC__in REFIID riid,
            /* [annotation][iid_is][out] */ 
            _COM_Outptr_  void **ppvObject);
        
        DECLSPEC_XFGVIRT(IUnknown, AddRef)
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            __RPC__in IOfflineFilesDirectoryItem * This);
        
        DECLSPEC_XFGVIRT(IUnknown, Release)
        ULONG ( STDMETHODCALLTYPE *Release )( 
            __RPC__in IOfflineFilesDirectoryItem * This);
        
        DECLSPEC_XFGVIRT(IOfflineFilesItem, GetItemType)
        HRESULT ( STDMETHODCALLTYPE *GetItemType )( 
            __RPC__in IOfflineFilesDirectoryItem * This,
            /* [out] */ __RPC__out OFFLINEFILES_ITEM_TYPE *pItemType);
        
        DECLSPEC_XFGVIRT(IOfflineFilesItem, GetPath)
        HRESULT ( STDMETHODCALLTYPE *GetPath )( 
            __RPC__in IOfflineFilesDirectoryItem * This,
            /* [string][out] */ __RPC__deref_out_opt_string LPWSTR *ppszPath);
        
        DECLSPEC_XFGVIRT(IOfflineFilesItem, GetParentItem)
        HRESULT ( STDMETHODCALLTYPE *GetParentItem )( 
            __RPC__in IOfflineFilesDirectoryItem * This,
            /* [out] */ __RPC__deref_out_opt IOfflineFilesItem **ppItem);
        
        DECLSPEC_XFGVIRT(IOfflineFilesItem, Refresh)
        HRESULT ( STDMETHODCALLTYPE *Refresh )( 
            __RPC__in IOfflineFilesDirectoryItem * This,
            /* [in] */ DWORD dwQueryFlags);
        
        DECLSPEC_XFGVIRT(IOfflineFilesItem, IsMarkedForDeletion)
        HRESULT ( STDMETHODCALLTYPE *IsMarkedForDeletion )( 
            __RPC__in IOfflineFilesDirectoryItem * This,
            /* [out] */ __RPC__out BOOL *pbMarkedForDeletion);
        
        END_INTERFACE
    } IOfflineFilesDirectoryItemVtbl;

    interface IOfflineFilesDirectoryItem
    {
        CONST_VTBL struct IOfflineFilesDirectoryItemVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IOfflineFilesDirectoryItem_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IOfflineFilesDirectoryItem_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IOfflineFilesDirectoryItem_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IOfflineFilesDirectoryItem_GetItemType(This,pItemType)	\
    ( (This)->lpVtbl -> GetItemType(This,pItemType) ) 

#define IOfflineFilesDirectoryItem_GetPath(This,ppszPath)	\
    ( (This)->lpVtbl -> GetPath(This,ppszPath) ) 

#define IOfflineFilesDirectoryItem_GetParentItem(This,ppItem)	\
    ( (This)->lpVtbl -> GetParentItem(This,ppItem) ) 

#define IOfflineFilesDirectoryItem_Refresh(This,dwQueryFlags)	\
    ( (This)->lpVtbl -> Refresh(This,dwQueryFlags) ) 

#define IOfflineFilesDirectoryItem_IsMarkedForDeletion(This,pbMarkedForDeletion)	\
    ( (This)->lpVtbl -> IsMarkedForDeletion(This,pbMarkedForDeletion) ) 


#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __IOfflineFilesDirectoryItem_INTERFACE_DEFINED__ */


#ifndef __IOfflineFilesFileItem_INTERFACE_DEFINED__
#define __IOfflineFilesFileItem_INTERFACE_DEFINED__

/* interface IOfflineFilesFileItem */
/* [unique][helpstring][uuid][object] */ 


EXTERN_C const IID IID_IOfflineFilesFileItem;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("8dfadead-26c2-4eff-8a72-6b50723d9a00")
    IOfflineFilesFileItem : public IOfflineFilesItem
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE IsSparse( 
            /* [out] */ __RPC__out BOOL *pbIsSparse) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE IsEncrypted( 
            /* [out] */ __RPC__out BOOL *pbIsEncrypted) = 0;
        
    };
    
    
#else 	/* C style interface */

    typedef struct IOfflineFilesFileItemVtbl
    {
        BEGIN_INTERFACE
        
        DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            __RPC__in IOfflineFilesFileItem * This,
            /* [in] */ __RPC__in REFIID riid,
            /* [annotation][iid_is][out] */ 
            _COM_Outptr_  void **ppvObject);
        
        DECLSPEC_XFGVIRT(IUnknown, AddRef)
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            __RPC__in IOfflineFilesFileItem * This);
        
        DECLSPEC_XFGVIRT(IUnknown, Release)
        ULONG ( STDMETHODCALLTYPE *Release )( 
            __RPC__in IOfflineFilesFileItem * This);
        
        DECLSPEC_XFGVIRT(IOfflineFilesItem, GetItemType)
        HRESULT ( STDMETHODCALLTYPE *GetItemType )( 
            __RPC__in IOfflineFilesFileItem * This,
            /* [out] */ __RPC__out OFFLINEFILES_ITEM_TYPE *pItemType);
        
        DECLSPEC_XFGVIRT(IOfflineFilesItem, GetPath)
        HRESULT ( STDMETHODCALLTYPE *GetPath )( 
            __RPC__in IOfflineFilesFileItem * This,
            /* [string][out] */ __RPC__deref_out_opt_string LPWSTR *ppszPath);
        
        DECLSPEC_XFGVIRT(IOfflineFilesItem, GetParentItem)
        HRESULT ( STDMETHODCALLTYPE *GetParentItem )( 
            __RPC__in IOfflineFilesFileItem * This,
            /* [out] */ __RPC__deref_out_opt IOfflineFilesItem **ppItem);
        
        DECLSPEC_XFGVIRT(IOfflineFilesItem, Refresh)
        HRESULT ( STDMETHODCALLTYPE *Refresh )( 
            __RPC__in IOfflineFilesFileItem * This,
            /* [in] */ DWORD dwQueryFlags);
        
        DECLSPEC_XFGVIRT(IOfflineFilesItem, IsMarkedForDeletion)
        HRESULT ( STDMETHODCALLTYPE *IsMarkedForDeletion )( 
            __RPC__in IOfflineFilesFileItem * This,
            /* [out] */ __RPC__out BOOL *pbMarkedForDeletion);
        
        DECLSPEC_XFGVIRT(IOfflineFilesFileItem, IsSparse)
        HRESULT ( STDMETHODCALLTYPE *IsSparse )( 
            __RPC__in IOfflineFilesFileItem * This,
            /* [out] */ __RPC__out BOOL *pbIsSparse);
        
        DECLSPEC_XFGVIRT(IOfflineFilesFileItem, IsEncrypted)
        HRESULT ( STDMETHODCALLTYPE *IsEncrypted )( 
            __RPC__in IOfflineFilesFileItem * This,
            /* [out] */ __RPC__out BOOL *pbIsEncrypted);
        
        END_INTERFACE
    } IOfflineFilesFileItemVtbl;

    interface IOfflineFilesFileItem
    {
        CONST_VTBL struct IOfflineFilesFileItemVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IOfflineFilesFileItem_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IOfflineFilesFileItem_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IOfflineFilesFileItem_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IOfflineFilesFileItem_GetItemType(This,pItemType)	\
    ( (This)->lpVtbl -> GetItemType(This,pItemType) ) 

#define IOfflineFilesFileItem_GetPath(This,ppszPath)	\
    ( (This)->lpVtbl -> GetPath(This,ppszPath) ) 

#define IOfflineFilesFileItem_GetParentItem(This,ppItem)	\
    ( (This)->lpVtbl -> GetParentItem(This,ppItem) ) 

#define IOfflineFilesFileItem_Refresh(This,dwQueryFlags)	\
    ( (This)->lpVtbl -> Refresh(This,dwQueryFlags) ) 

#define IOfflineFilesFileItem_IsMarkedForDeletion(This,pbMarkedForDeletion)	\
    ( (This)->lpVtbl -> IsMarkedForDeletion(This,pbMarkedForDeletion) ) 


#define IOfflineFilesFileItem_IsSparse(This,pbIsSparse)	\
    ( (This)->lpVtbl -> IsSparse(This,pbIsSparse) ) 

#define IOfflineFilesFileItem_IsEncrypted(This,pbIsEncrypted)	\
    ( (This)->lpVtbl -> IsEncrypted(This,pbIsEncrypted) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __IOfflineFilesFileItem_INTERFACE_DEFINED__ */


#ifndef __IEnumOfflineFilesItems_INTERFACE_DEFINED__
#define __IEnumOfflineFilesItems_INTERFACE_DEFINED__

/* interface IEnumOfflineFilesItems */
/* [unique][helpstring][uuid][object] */ 


EXTERN_C const IID IID_IEnumOfflineFilesItems;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("DA70E815-C361-4407-BC0B-0D7046E5F2CD")
    IEnumOfflineFilesItems : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE Next( 
            /* [in] */ ULONG celt,
            /* [length_is][size_is][out] */ __RPC__out_ecount_part(celt, *pceltFetched) IOfflineFilesItem **rgelt,
            /* [out] */ __RPC__out ULONG *pceltFetched) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE Skip( 
            /* [in] */ ULONG celt) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE Reset( void) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE Clone( 
            /* [out] */ __RPC__deref_out_opt IEnumOfflineFilesItems **ppenum) = 0;
        
    };
    
    
#else 	/* C style interface */

    typedef struct IEnumOfflineFilesItemsVtbl
    {
        BEGIN_INTERFACE
        
        DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            __RPC__in IEnumOfflineFilesItems * This,
            /* [in] */ __RPC__in REFIID riid,
            /* [annotation][iid_is][out] */ 
            _COM_Outptr_  void **ppvObject);
        
        DECLSPEC_XFGVIRT(IUnknown, AddRef)
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            __RPC__in IEnumOfflineFilesItems * This);
        
        DECLSPEC_XFGVIRT(IUnknown, Release)
        ULONG ( STDMETHODCALLTYPE *Release )( 
            __RPC__in IEnumOfflineFilesItems * This);
        
        DECLSPEC_XFGVIRT(IEnumOfflineFilesItems, Next)
        HRESULT ( STDMETHODCALLTYPE *Next )( 
            __RPC__in IEnumOfflineFilesItems * This,
            /* [in] */ ULONG celt,
            /* [length_is][size_is][out] */ __RPC__out_ecount_part(celt, *pceltFetched) IOfflineFilesItem **rgelt,
            /* [out] */ __RPC__out ULONG *pceltFetched);
        
        DECLSPEC_XFGVIRT(IEnumOfflineFilesItems, Skip)
        HRESULT ( STDMETHODCALLTYPE *Skip )( 
            __RPC__in IEnumOfflineFilesItems * This,
            /* [in] */ ULONG celt);
        
        DECLSPEC_XFGVIRT(IEnumOfflineFilesItems, Reset)
        HRESULT ( STDMETHODCALLTYPE *Reset )( 
            __RPC__in IEnumOfflineFilesItems * This);
        
        DECLSPEC_XFGVIRT(IEnumOfflineFilesItems, Clone)
        HRESULT ( STDMETHODCALLTYPE *Clone )( 
            __RPC__in IEnumOfflineFilesItems * This,
            /* [out] */ __RPC__deref_out_opt IEnumOfflineFilesItems **ppenum);
        
        END_INTERFACE
    } IEnumOfflineFilesItemsVtbl;

    interface IEnumOfflineFilesItems
    {
        CONST_VTBL struct IEnumOfflineFilesItemsVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IEnumOfflineFilesItems_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IEnumOfflineFilesItems_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IEnumOfflineFilesItems_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IEnumOfflineFilesItems_Next(This,celt,rgelt,pceltFetched)	\
    ( (This)->lpVtbl -> Next(This,celt,rgelt,pceltFetched) ) 

#define IEnumOfflineFilesItems_Skip(This,celt)	\
    ( (This)->lpVtbl -> Skip(This,celt) ) 

#define IEnumOfflineFilesItems_Reset(This)	\
    ( (This)->lpVtbl -> Reset(This) ) 

#define IEnumOfflineFilesItems_Clone(This,ppenum)	\
    ( (This)->lpVtbl -> Clone(This,ppenum) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __IEnumOfflineFilesItems_INTERFACE_DEFINED__ */


#ifndef __IOfflineFilesItemContainer_INTERFACE_DEFINED__
#define __IOfflineFilesItemContainer_INTERFACE_DEFINED__

/* interface IOfflineFilesItemContainer */
/* [unique][helpstring][uuid][object] */ 


EXTERN_C const IID IID_IOfflineFilesItemContainer;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("3836F049-9413-45dd-BF46-B5AAA82DC310")
    IOfflineFilesItemContainer : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE EnumItems( 
            /* [in] */ DWORD dwQueryFlags,
            /* [out] */ __RPC__deref_out_opt IEnumOfflineFilesItems **ppenum) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE EnumItemsEx( 
            /* [unique][in] */ __RPC__in_opt IOfflineFilesItemFilter *pIncludeFileFilter,
            /* [unique][in] */ __RPC__in_opt IOfflineFilesItemFilter *pIncludeDirFilter,
            /* [unique][in] */ __RPC__in_opt IOfflineFilesItemFilter *pExcludeFileFilter,
            /* [unique][in] */ __RPC__in_opt IOfflineFilesItemFilter *pExcludeDirFilter,
            /* [in] */ DWORD dwEnumFlags,
            /* [in] */ DWORD dwQueryFlags,
            /* [out] */ __RPC__deref_out_opt IEnumOfflineFilesItems **ppenum) = 0;
        
    };
    
    
#else 	/* C style interface */

    typedef struct IOfflineFilesItemContainerVtbl
    {
        BEGIN_INTERFACE
        
        DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            __RPC__in IOfflineFilesItemContainer * This,
            /* [in] */ __RPC__in REFIID riid,
            /* [annotation][iid_is][out] */ 
            _COM_Outptr_  void **ppvObject);
        
        DECLSPEC_XFGVIRT(IUnknown, AddRef)
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            __RPC__in IOfflineFilesItemContainer * This);
        
        DECLSPEC_XFGVIRT(IUnknown, Release)
        ULONG ( STDMETHODCALLTYPE *Release )( 
            __RPC__in IOfflineFilesItemContainer * This);
        
        DECLSPEC_XFGVIRT(IOfflineFilesItemContainer, EnumItems)
        HRESULT ( STDMETHODCALLTYPE *EnumItems )( 
            __RPC__in IOfflineFilesItemContainer * This,
            /* [in] */ DWORD dwQueryFlags,
            /* [out] */ __RPC__deref_out_opt IEnumOfflineFilesItems **ppenum);
        
        DECLSPEC_XFGVIRT(IOfflineFilesItemContainer, EnumItemsEx)
        HRESULT ( STDMETHODCALLTYPE *EnumItemsEx )( 
            __RPC__in IOfflineFilesItemContainer * This,
            /* [unique][in] */ __RPC__in_opt IOfflineFilesItemFilter *pIncludeFileFilter,
            /* [unique][in] */ __RPC__in_opt IOfflineFilesItemFilter *pIncludeDirFilter,
            /* [unique][in] */ __RPC__in_opt IOfflineFilesItemFilter *pExcludeFileFilter,
            /* [unique][in] */ __RPC__in_opt IOfflineFilesItemFilter *pExcludeDirFilter,
            /* [in] */ DWORD dwEnumFlags,
            /* [in] */ DWORD dwQueryFlags,
            /* [out] */ __RPC__deref_out_opt IEnumOfflineFilesItems **ppenum);
        
        END_INTERFACE
    } IOfflineFilesItemContainerVtbl;

    interface IOfflineFilesItemContainer
    {
        CONST_VTBL struct IOfflineFilesItemContainerVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IOfflineFilesItemContainer_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IOfflineFilesItemContainer_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IOfflineFilesItemContainer_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IOfflineFilesItemContainer_EnumItems(This,dwQueryFlags,ppenum)	\
    ( (This)->lpVtbl -> EnumItems(This,dwQueryFlags,ppenum) ) 

#define IOfflineFilesItemContainer_EnumItemsEx(This,pIncludeFileFilter,pIncludeDirFilter,pExcludeFileFilter,pExcludeDirFilter,dwEnumFlags,dwQueryFlags,ppenum)	\
    ( (This)->lpVtbl -> EnumItemsEx(This,pIncludeFileFilter,pIncludeDirFilter,pExcludeFileFilter,pExcludeDirFilter,dwEnumFlags,dwQueryFlags,ppenum) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __IOfflineFilesItemContainer_INTERFACE_DEFINED__ */


#ifndef __IOfflineFilesChangeInfo_INTERFACE_DEFINED__
#define __IOfflineFilesChangeInfo_INTERFACE_DEFINED__

/* interface IOfflineFilesChangeInfo */
/* [unique][helpstring][uuid][object] */ 


EXTERN_C const IID IID_IOfflineFilesChangeInfo;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("A96E6FA4-E0D1-4c29-960B-EE508FE68C72")
    IOfflineFilesChangeInfo : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE IsDirty( 
            /* [out] */ __RPC__out BOOL *pbDirty) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE IsDeletedOffline( 
            /* [out] */ __RPC__out BOOL *pbDeletedOffline) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE IsCreatedOffline( 
            /* [out] */ __RPC__out BOOL *pbCreatedOffline) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE IsLocallyModifiedData( 
            /* [out] */ __RPC__out BOOL *pbLocallyModifiedData) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE IsLocallyModifiedAttributes( 
            /* [out] */ __RPC__out BOOL *pbLocallyModifiedAttributes) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE IsLocallyModifiedTime( 
            /* [out] */ __RPC__out BOOL *pbLocallyModifiedTime) = 0;
        
    };
    
    
#else 	/* C style interface */

    typedef struct IOfflineFilesChangeInfoVtbl
    {
        BEGIN_INTERFACE
        
        DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            __RPC__in IOfflineFilesChangeInfo * This,
            /* [in] */ __RPC__in REFIID riid,
            /* [annotation][iid_is][out] */ 
            _COM_Outptr_  void **ppvObject);
        
        DECLSPEC_XFGVIRT(IUnknown, AddRef)
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            __RPC__in IOfflineFilesChangeInfo * This);
        
        DECLSPEC_XFGVIRT(IUnknown, Release)
        ULONG ( STDMETHODCALLTYPE *Release )( 
            __RPC__in IOfflineFilesChangeInfo * This);
        
        DECLSPEC_XFGVIRT(IOfflineFilesChangeInfo, IsDirty)
        HRESULT ( STDMETHODCALLTYPE *IsDirty )( 
            __RPC__in IOfflineFilesChangeInfo * This,
            /* [out] */ __RPC__out BOOL *pbDirty);
        
        DECLSPEC_XFGVIRT(IOfflineFilesChangeInfo, IsDeletedOffline)
        HRESULT ( STDMETHODCALLTYPE *IsDeletedOffline )( 
            __RPC__in IOfflineFilesChangeInfo * This,
            /* [out] */ __RPC__out BOOL *pbDeletedOffline);
        
        DECLSPEC_XFGVIRT(IOfflineFilesChangeInfo, IsCreatedOffline)
        HRESULT ( STDMETHODCALLTYPE *IsCreatedOffline )( 
            __RPC__in IOfflineFilesChangeInfo * This,
            /* [out] */ __RPC__out BOOL *pbCreatedOffline);
        
        DECLSPEC_XFGVIRT(IOfflineFilesChangeInfo, IsLocallyModifiedData)
        HRESULT ( STDMETHODCALLTYPE *IsLocallyModifiedData )( 
            __RPC__in IOfflineFilesChangeInfo * This,
            /* [out] */ __RPC__out BOOL *pbLocallyModifiedData);
        
        DECLSPEC_XFGVIRT(IOfflineFilesChangeInfo, IsLocallyModifiedAttributes)
        HRESULT ( STDMETHODCALLTYPE *IsLocallyModifiedAttributes )( 
            __RPC__in IOfflineFilesChangeInfo * This,
            /* [out] */ __RPC__out BOOL *pbLocallyModifiedAttributes);
        
        DECLSPEC_XFGVIRT(IOfflineFilesChangeInfo, IsLocallyModifiedTime)
        HRESULT ( STDMETHODCALLTYPE *IsLocallyModifiedTime )( 
            __RPC__in IOfflineFilesChangeInfo * This,
            /* [out] */ __RPC__out BOOL *pbLocallyModifiedTime);
        
        END_INTERFACE
    } IOfflineFilesChangeInfoVtbl;

    interface IOfflineFilesChangeInfo
    {
        CONST_VTBL struct IOfflineFilesChangeInfoVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IOfflineFilesChangeInfo_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IOfflineFilesChangeInfo_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IOfflineFilesChangeInfo_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IOfflineFilesChangeInfo_IsDirty(This,pbDirty)	\
    ( (This)->lpVtbl -> IsDirty(This,pbDirty) ) 

#define IOfflineFilesChangeInfo_IsDeletedOffline(This,pbDeletedOffline)	\
    ( (This)->lpVtbl -> IsDeletedOffline(This,pbDeletedOffline) ) 

#define IOfflineFilesChangeInfo_IsCreatedOffline(This,pbCreatedOffline)	\
    ( (This)->lpVtbl -> IsCreatedOffline(This,pbCreatedOffline) ) 

#define IOfflineFilesChangeInfo_IsLocallyModifiedData(This,pbLocallyModifiedData)	\
    ( (This)->lpVtbl -> IsLocallyModifiedData(This,pbLocallyModifiedData) ) 

#define IOfflineFilesChangeInfo_IsLocallyModifiedAttributes(This,pbLocallyModifiedAttributes)	\
    ( (This)->lpVtbl -> IsLocallyModifiedAttributes(This,pbLocallyModifiedAttributes) ) 

#define IOfflineFilesChangeInfo_IsLocallyModifiedTime(This,pbLocallyModifiedTime)	\
    ( (This)->lpVtbl -> IsLocallyModifiedTime(This,pbLocallyModifiedTime) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __IOfflineFilesChangeInfo_INTERFACE_DEFINED__ */


#ifndef __IOfflineFilesDirtyInfo_INTERFACE_DEFINED__
#define __IOfflineFilesDirtyInfo_INTERFACE_DEFINED__

/* interface IOfflineFilesDirtyInfo */
/* [unique][helpstring][uuid][object] */ 


EXTERN_C const IID IID_IOfflineFilesDirtyInfo;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("0f50ce33-bac9-4eaa-a11d-da0e527d047d")
    IOfflineFilesDirtyInfo : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE LocalDirtyByteCount( 
            /* [out] */ __RPC__out LARGE_INTEGER *pDirtyByteCount) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE RemoteDirtyByteCount( 
            /* [out] */ __RPC__out LARGE_INTEGER *pDirtyByteCount) = 0;
        
    };
    
    
#else 	/* C style interface */

    typedef struct IOfflineFilesDirtyInfoVtbl
    {
        BEGIN_INTERFACE
        
        DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            __RPC__in IOfflineFilesDirtyInfo * This,
            /* [in] */ __RPC__in REFIID riid,
            /* [annotation][iid_is][out] */ 
            _COM_Outptr_  void **ppvObject);
        
        DECLSPEC_XFGVIRT(IUnknown, AddRef)
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            __RPC__in IOfflineFilesDirtyInfo * This);
        
        DECLSPEC_XFGVIRT(IUnknown, Release)
        ULONG ( STDMETHODCALLTYPE *Release )( 
            __RPC__in IOfflineFilesDirtyInfo * This);
        
        DECLSPEC_XFGVIRT(IOfflineFilesDirtyInfo, LocalDirtyByteCount)
        HRESULT ( STDMETHODCALLTYPE *LocalDirtyByteCount )( 
            __RPC__in IOfflineFilesDirtyInfo * This,
            /* [out] */ __RPC__out LARGE_INTEGER *pDirtyByteCount);
        
        DECLSPEC_XFGVIRT(IOfflineFilesDirtyInfo, RemoteDirtyByteCount)
        HRESULT ( STDMETHODCALLTYPE *RemoteDirtyByteCount )( 
            __RPC__in IOfflineFilesDirtyInfo * This,
            /* [out] */ __RPC__out LARGE_INTEGER *pDirtyByteCount);
        
        END_INTERFACE
    } IOfflineFilesDirtyInfoVtbl;

    interface IOfflineFilesDirtyInfo
    {
        CONST_VTBL struct IOfflineFilesDirtyInfoVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IOfflineFilesDirtyInfo_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IOfflineFilesDirtyInfo_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IOfflineFilesDirtyInfo_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IOfflineFilesDirtyInfo_LocalDirtyByteCount(This,pDirtyByteCount)	\
    ( (This)->lpVtbl -> LocalDirtyByteCount(This,pDirtyByteCount) ) 

#define IOfflineFilesDirtyInfo_RemoteDirtyByteCount(This,pDirtyByteCount)	\
    ( (This)->lpVtbl -> RemoteDirtyByteCount(This,pDirtyByteCount) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __IOfflineFilesDirtyInfo_INTERFACE_DEFINED__ */


#ifndef __IOfflineFilesFileSysInfo_INTERFACE_DEFINED__
#define __IOfflineFilesFileSysInfo_INTERFACE_DEFINED__

/* interface IOfflineFilesFileSysInfo */
/* [unique][helpstring][uuid][object] */ 


EXTERN_C const IID IID_IOfflineFilesFileSysInfo;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("BC1A163F-7BFD-4d88-9C66-96EA9A6A3D6B")
    IOfflineFilesFileSysInfo : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE GetAttributes( 
            /* [in] */ OFFLINEFILES_ITEM_COPY copy,
            /* [out] */ __RPC__out DWORD *pdwAttributes) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetTimes( 
            /* [in] */ OFFLINEFILES_ITEM_COPY copy,
            /* [out] */ __RPC__out FILETIME *pftCreationTime,
            /* [out] */ __RPC__out FILETIME *pftLastWriteTime,
            /* [out] */ __RPC__out FILETIME *pftChangeTime,
            /* [out] */ __RPC__out FILETIME *pftLastAccessTime) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetFileSize( 
            /* [in] */ OFFLINEFILES_ITEM_COPY copy,
            /* [out] */ __RPC__out LARGE_INTEGER *pSize) = 0;
        
    };
    
    
#else 	/* C style interface */

    typedef struct IOfflineFilesFileSysInfoVtbl
    {
        BEGIN_INTERFACE
        
        DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            __RPC__in IOfflineFilesFileSysInfo * This,
            /* [in] */ __RPC__in REFIID riid,
            /* [annotation][iid_is][out] */ 
            _COM_Outptr_  void **ppvObject);
        
        DECLSPEC_XFGVIRT(IUnknown, AddRef)
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            __RPC__in IOfflineFilesFileSysInfo * This);
        
        DECLSPEC_XFGVIRT(IUnknown, Release)
        ULONG ( STDMETHODCALLTYPE *Release )( 
            __RPC__in IOfflineFilesFileSysInfo * This);
        
        DECLSPEC_XFGVIRT(IOfflineFilesFileSysInfo, GetAttributes)
        HRESULT ( STDMETHODCALLTYPE *GetAttributes )( 
            __RPC__in IOfflineFilesFileSysInfo * This,
            /* [in] */ OFFLINEFILES_ITEM_COPY copy,
            /* [out] */ __RPC__out DWORD *pdwAttributes);
        
        DECLSPEC_XFGVIRT(IOfflineFilesFileSysInfo, GetTimes)
        HRESULT ( STDMETHODCALLTYPE *GetTimes )( 
            __RPC__in IOfflineFilesFileSysInfo * This,
            /* [in] */ OFFLINEFILES_ITEM_COPY copy,
            /* [out] */ __RPC__out FILETIME *pftCreationTime,
            /* [out] */ __RPC__out FILETIME *pftLastWriteTime,
            /* [out] */ __RPC__out FILETIME *pftChangeTime,
            /* [out] */ __RPC__out FILETIME *pftLastAccessTime);
        
        DECLSPEC_XFGVIRT(IOfflineFilesFileSysInfo, GetFileSize)
        HRESULT ( STDMETHODCALLTYPE *GetFileSize )( 
            __RPC__in IOfflineFilesFileSysInfo * This,
            /* [in] */ OFFLINEFILES_ITEM_COPY copy,
            /* [out] */ __RPC__out LARGE_INTEGER *pSize);
        
        END_INTERFACE
    } IOfflineFilesFileSysInfoVtbl;

    interface IOfflineFilesFileSysInfo
    {
        CONST_VTBL struct IOfflineFilesFileSysInfoVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IOfflineFilesFileSysInfo_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IOfflineFilesFileSysInfo_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IOfflineFilesFileSysInfo_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IOfflineFilesFileSysInfo_GetAttributes(This,copy,pdwAttributes)	\
    ( (This)->lpVtbl -> GetAttributes(This,copy,pdwAttributes) ) 

#define IOfflineFilesFileSysInfo_GetTimes(This,copy,pftCreationTime,pftLastWriteTime,pftChangeTime,pftLastAccessTime)	\
    ( (This)->lpVtbl -> GetTimes(This,copy,pftCreationTime,pftLastWriteTime,pftChangeTime,pftLastAccessTime) ) 

#define IOfflineFilesFileSysInfo_GetFileSize(This,copy,pSize)	\
    ( (This)->lpVtbl -> GetFileSize(This,copy,pSize) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __IOfflineFilesFileSysInfo_INTERFACE_DEFINED__ */


#ifndef __IOfflineFilesPinInfo_INTERFACE_DEFINED__
#define __IOfflineFilesPinInfo_INTERFACE_DEFINED__

/* interface IOfflineFilesPinInfo */
/* [unique][helpstring][uuid][object] */ 


EXTERN_C const IID IID_IOfflineFilesPinInfo;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("5B2B0655-B3FD-497d-ADEB-BD156BC8355B")
    IOfflineFilesPinInfo : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE IsPinned( 
            /* [out] */ __RPC__out BOOL *pbPinned) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE IsPinnedForUser( 
            /* [out] */ __RPC__out BOOL *pbPinnedForUser,
            /* [out] */ __RPC__out BOOL *pbInherit) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE IsPinnedForUserByPolicy( 
            /* [out] */ __RPC__out BOOL *pbPinnedForUser,
            /* [out] */ __RPC__out BOOL *pbInherit) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE IsPinnedForComputer( 
            /* [out] */ __RPC__out BOOL *pbPinnedForComputer,
            /* [out] */ __RPC__out BOOL *pbInherit) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE IsPinnedForFolderRedirection( 
            /* [out] */ __RPC__out BOOL *pbPinnedForFolderRedirection,
            /* [out] */ __RPC__out BOOL *pbInherit) = 0;
        
    };
    
    
#else 	/* C style interface */

    typedef struct IOfflineFilesPinInfoVtbl
    {
        BEGIN_INTERFACE
        
        DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            __RPC__in IOfflineFilesPinInfo * This,
            /* [in] */ __RPC__in REFIID riid,
            /* [annotation][iid_is][out] */ 
            _COM_Outptr_  void **ppvObject);
        
        DECLSPEC_XFGVIRT(IUnknown, AddRef)
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            __RPC__in IOfflineFilesPinInfo * This);
        
        DECLSPEC_XFGVIRT(IUnknown, Release)
        ULONG ( STDMETHODCALLTYPE *Release )( 
            __RPC__in IOfflineFilesPinInfo * This);
        
        DECLSPEC_XFGVIRT(IOfflineFilesPinInfo, IsPinned)
        HRESULT ( STDMETHODCALLTYPE *IsPinned )( 
            __RPC__in IOfflineFilesPinInfo * This,
            /* [out] */ __RPC__out BOOL *pbPinned);
        
        DECLSPEC_XFGVIRT(IOfflineFilesPinInfo, IsPinnedForUser)
        HRESULT ( STDMETHODCALLTYPE *IsPinnedForUser )( 
            __RPC__in IOfflineFilesPinInfo * This,
            /* [out] */ __RPC__out BOOL *pbPinnedForUser,
            /* [out] */ __RPC__out BOOL *pbInherit);
        
        DECLSPEC_XFGVIRT(IOfflineFilesPinInfo, IsPinnedForUserByPolicy)
        HRESULT ( STDMETHODCALLTYPE *IsPinnedForUserByPolicy )( 
            __RPC__in IOfflineFilesPinInfo * This,
            /* [out] */ __RPC__out BOOL *pbPinnedForUser,
            /* [out] */ __RPC__out BOOL *pbInherit);
        
        DECLSPEC_XFGVIRT(IOfflineFilesPinInfo, IsPinnedForComputer)
        HRESULT ( STDMETHODCALLTYPE *IsPinnedForComputer )( 
            __RPC__in IOfflineFilesPinInfo * This,
            /* [out] */ __RPC__out BOOL *pbPinnedForComputer,
            /* [out] */ __RPC__out BOOL *pbInherit);
        
        DECLSPEC_XFGVIRT(IOfflineFilesPinInfo, IsPinnedForFolderRedirection)
        HRESULT ( STDMETHODCALLTYPE *IsPinnedForFolderRedirection )( 
            __RPC__in IOfflineFilesPinInfo * This,
            /* [out] */ __RPC__out BOOL *pbPinnedForFolderRedirection,
            /* [out] */ __RPC__out BOOL *pbInherit);
        
        END_INTERFACE
    } IOfflineFilesPinInfoVtbl;

    interface IOfflineFilesPinInfo
    {
        CONST_VTBL struct IOfflineFilesPinInfoVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IOfflineFilesPinInfo_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IOfflineFilesPinInfo_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IOfflineFilesPinInfo_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IOfflineFilesPinInfo_IsPinned(This,pbPinned)	\
    ( (This)->lpVtbl -> IsPinned(This,pbPinned) ) 

#define IOfflineFilesPinInfo_IsPinnedForUser(This,pbPinnedForUser,pbInherit)	\
    ( (This)->lpVtbl -> IsPinnedForUser(This,pbPinnedForUser,pbInherit) ) 

#define IOfflineFilesPinInfo_IsPinnedForUserByPolicy(This,pbPinnedForUser,pbInherit)	\
    ( (This)->lpVtbl -> IsPinnedForUserByPolicy(This,pbPinnedForUser,pbInherit) ) 

#define IOfflineFilesPinInfo_IsPinnedForComputer(This,pbPinnedForComputer,pbInherit)	\
    ( (This)->lpVtbl -> IsPinnedForComputer(This,pbPinnedForComputer,pbInherit) ) 

#define IOfflineFilesPinInfo_IsPinnedForFolderRedirection(This,pbPinnedForFolderRedirection,pbInherit)	\
    ( (This)->lpVtbl -> IsPinnedForFolderRedirection(This,pbPinnedForFolderRedirection,pbInherit) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __IOfflineFilesPinInfo_INTERFACE_DEFINED__ */


#ifndef __IOfflineFilesPinInfo2_INTERFACE_DEFINED__
#define __IOfflineFilesPinInfo2_INTERFACE_DEFINED__

/* interface IOfflineFilesPinInfo2 */
/* [unique][helpstring][uuid][object] */ 


EXTERN_C const IID IID_IOfflineFilesPinInfo2;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("623C58A2-42ED-4ad7-B69A-0F1B30A72D0D")
    IOfflineFilesPinInfo2 : public IOfflineFilesPinInfo
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE IsPartlyPinned( 
            /* [out] */ __RPC__out BOOL *pbPartlyPinned) = 0;
        
    };
    
    
#else 	/* C style interface */

    typedef struct IOfflineFilesPinInfo2Vtbl
    {
        BEGIN_INTERFACE
        
        DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            __RPC__in IOfflineFilesPinInfo2 * This,
            /* [in] */ __RPC__in REFIID riid,
            /* [annotation][iid_is][out] */ 
            _COM_Outptr_  void **ppvObject);
        
        DECLSPEC_XFGVIRT(IUnknown, AddRef)
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            __RPC__in IOfflineFilesPinInfo2 * This);
        
        DECLSPEC_XFGVIRT(IUnknown, Release)
        ULONG ( STDMETHODCALLTYPE *Release )( 
            __RPC__in IOfflineFilesPinInfo2 * This);
        
        DECLSPEC_XFGVIRT(IOfflineFilesPinInfo, IsPinned)
        HRESULT ( STDMETHODCALLTYPE *IsPinned )( 
            __RPC__in IOfflineFilesPinInfo2 * This,
            /* [out] */ __RPC__out BOOL *pbPinned);
        
        DECLSPEC_XFGVIRT(IOfflineFilesPinInfo, IsPinnedForUser)
        HRESULT ( STDMETHODCALLTYPE *IsPinnedForUser )( 
            __RPC__in IOfflineFilesPinInfo2 * This,
            /* [out] */ __RPC__out BOOL *pbPinnedForUser,
            /* [out] */ __RPC__out BOOL *pbInherit);
        
        DECLSPEC_XFGVIRT(IOfflineFilesPinInfo, IsPinnedForUserByPolicy)
        HRESULT ( STDMETHODCALLTYPE *IsPinnedForUserByPolicy )( 
            __RPC__in IOfflineFilesPinInfo2 * This,
            /* [out] */ __RPC__out BOOL *pbPinnedForUser,
            /* [out] */ __RPC__out BOOL *pbInherit);
        
        DECLSPEC_XFGVIRT(IOfflineFilesPinInfo, IsPinnedForComputer)
        HRESULT ( STDMETHODCALLTYPE *IsPinnedForComputer )( 
            __RPC__in IOfflineFilesPinInfo2 * This,
            /* [out] */ __RPC__out BOOL *pbPinnedForComputer,
            /* [out] */ __RPC__out BOOL *pbInherit);
        
        DECLSPEC_XFGVIRT(IOfflineFilesPinInfo, IsPinnedForFolderRedirection)
        HRESULT ( STDMETHODCALLTYPE *IsPinnedForFolderRedirection )( 
            __RPC__in IOfflineFilesPinInfo2 * This,
            /* [out] */ __RPC__out BOOL *pbPinnedForFolderRedirection,
            /* [out] */ __RPC__out BOOL *pbInherit);
        
        DECLSPEC_XFGVIRT(IOfflineFilesPinInfo2, IsPartlyPinned)
        HRESULT ( STDMETHODCALLTYPE *IsPartlyPinned )( 
            __RPC__in IOfflineFilesPinInfo2 * This,
            /* [out] */ __RPC__out BOOL *pbPartlyPinned);
        
        END_INTERFACE
    } IOfflineFilesPinInfo2Vtbl;

    interface IOfflineFilesPinInfo2
    {
        CONST_VTBL struct IOfflineFilesPinInfo2Vtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IOfflineFilesPinInfo2_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IOfflineFilesPinInfo2_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IOfflineFilesPinInfo2_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IOfflineFilesPinInfo2_IsPinned(This,pbPinned)	\
    ( (This)->lpVtbl -> IsPinned(This,pbPinned) ) 

#define IOfflineFilesPinInfo2_IsPinnedForUser(This,pbPinnedForUser,pbInherit)	\
    ( (This)->lpVtbl -> IsPinnedForUser(This,pbPinnedForUser,pbInherit) ) 

#define IOfflineFilesPinInfo2_IsPinnedForUserByPolicy(This,pbPinnedForUser,pbInherit)	\
    ( (This)->lpVtbl -> IsPinnedForUserByPolicy(This,pbPinnedForUser,pbInherit) ) 

#define IOfflineFilesPinInfo2_IsPinnedForComputer(This,pbPinnedForComputer,pbInherit)	\
    ( (This)->lpVtbl -> IsPinnedForComputer(This,pbPinnedForComputer,pbInherit) ) 

#define IOfflineFilesPinInfo2_IsPinnedForFolderRedirection(This,pbPinnedForFolderRedirection,pbInherit)	\
    ( (This)->lpVtbl -> IsPinnedForFolderRedirection(This,pbPinnedForFolderRedirection,pbInherit) ) 


#define IOfflineFilesPinInfo2_IsPartlyPinned(This,pbPartlyPinned)	\
    ( (This)->lpVtbl -> IsPartlyPinned(This,pbPartlyPinned) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __IOfflineFilesPinInfo2_INTERFACE_DEFINED__ */


#ifndef __IOfflineFilesTransparentCacheInfo_INTERFACE_DEFINED__
#define __IOfflineFilesTransparentCacheInfo_INTERFACE_DEFINED__

/* interface IOfflineFilesTransparentCacheInfo */
/* [unique][helpstring][uuid][object] */ 


EXTERN_C const IID IID_IOfflineFilesTransparentCacheInfo;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("bcaf4a01-5b68-4b56-a6a1-8d2786ede8e3")
    IOfflineFilesTransparentCacheInfo : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE IsTransparentlyCached( 
            /* [out] */ __RPC__out BOOL *pbTransparentlyCached) = 0;
        
    };
    
    
#else 	/* C style interface */

    typedef struct IOfflineFilesTransparentCacheInfoVtbl
    {
        BEGIN_INTERFACE
        
        DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            __RPC__in IOfflineFilesTransparentCacheInfo * This,
            /* [in] */ __RPC__in REFIID riid,
            /* [annotation][iid_is][out] */ 
            _COM_Outptr_  void **ppvObject);
        
        DECLSPEC_XFGVIRT(IUnknown, AddRef)
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            __RPC__in IOfflineFilesTransparentCacheInfo * This);
        
        DECLSPEC_XFGVIRT(IUnknown, Release)
        ULONG ( STDMETHODCALLTYPE *Release )( 
            __RPC__in IOfflineFilesTransparentCacheInfo * This);
        
        DECLSPEC_XFGVIRT(IOfflineFilesTransparentCacheInfo, IsTransparentlyCached)
        HRESULT ( STDMETHODCALLTYPE *IsTransparentlyCached )( 
            __RPC__in IOfflineFilesTransparentCacheInfo * This,
            /* [out] */ __RPC__out BOOL *pbTransparentlyCached);
        
        END_INTERFACE
    } IOfflineFilesTransparentCacheInfoVtbl;

    interface IOfflineFilesTransparentCacheInfo
    {
        CONST_VTBL struct IOfflineFilesTransparentCacheInfoVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IOfflineFilesTransparentCacheInfo_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IOfflineFilesTransparentCacheInfo_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IOfflineFilesTransparentCacheInfo_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IOfflineFilesTransparentCacheInfo_IsTransparentlyCached(This,pbTransparentlyCached)	\
    ( (This)->lpVtbl -> IsTransparentlyCached(This,pbTransparentlyCached) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __IOfflineFilesTransparentCacheInfo_INTERFACE_DEFINED__ */


#ifndef __IOfflineFilesGhostInfo_INTERFACE_DEFINED__
#define __IOfflineFilesGhostInfo_INTERFACE_DEFINED__

/* interface IOfflineFilesGhostInfo */
/* [unique][helpstring][uuid][object] */ 


EXTERN_C const IID IID_IOfflineFilesGhostInfo;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("2B09D48C-8AB5-464f-A755-A59D92F99429")
    IOfflineFilesGhostInfo : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE IsGhosted( 
            /* [out] */ __RPC__out BOOL *pbGhosted) = 0;
        
    };
    
    
#else 	/* C style interface */

    typedef struct IOfflineFilesGhostInfoVtbl
    {
        BEGIN_INTERFACE
        
        DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            __RPC__in IOfflineFilesGhostInfo * This,
            /* [in] */ __RPC__in REFIID riid,
            /* [annotation][iid_is][out] */ 
            _COM_Outptr_  void **ppvObject);
        
        DECLSPEC_XFGVIRT(IUnknown, AddRef)
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            __RPC__in IOfflineFilesGhostInfo * This);
        
        DECLSPEC_XFGVIRT(IUnknown, Release)
        ULONG ( STDMETHODCALLTYPE *Release )( 
            __RPC__in IOfflineFilesGhostInfo * This);
        
        DECLSPEC_XFGVIRT(IOfflineFilesGhostInfo, IsGhosted)
        HRESULT ( STDMETHODCALLTYPE *IsGhosted )( 
            __RPC__in IOfflineFilesGhostInfo * This,
            /* [out] */ __RPC__out BOOL *pbGhosted);
        
        END_INTERFACE
    } IOfflineFilesGhostInfoVtbl;

    interface IOfflineFilesGhostInfo
    {
        CONST_VTBL struct IOfflineFilesGhostInfoVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IOfflineFilesGhostInfo_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IOfflineFilesGhostInfo_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IOfflineFilesGhostInfo_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IOfflineFilesGhostInfo_IsGhosted(This,pbGhosted)	\
    ( (This)->lpVtbl -> IsGhosted(This,pbGhosted) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __IOfflineFilesGhostInfo_INTERFACE_DEFINED__ */


#ifndef __IOfflineFilesConnectionInfo_INTERFACE_DEFINED__
#define __IOfflineFilesConnectionInfo_INTERFACE_DEFINED__

/* interface IOfflineFilesConnectionInfo */
/* [unique][helpstring][uuid][object] */ 


EXTERN_C const IID IID_IOfflineFilesConnectionInfo;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("EFB23A09-A867-4be8-83A6-86969A7D0856")
    IOfflineFilesConnectionInfo : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE GetConnectState( 
            /* [out] */ __RPC__out OFFLINEFILES_CONNECT_STATE *pConnectState,
            /* [out] */ __RPC__out OFFLINEFILES_OFFLINE_REASON *pOfflineReason) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE SetConnectState( 
            /* [unique][in] */ __RPC__in_opt HWND hwndParent,
            /* [in] */ DWORD dwFlags,
            /* [in] */ OFFLINEFILES_CONNECT_STATE ConnectState) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE TransitionOnline( 
            /* [unique][in] */ __RPC__in_opt HWND hwndParent,
            /* [in] */ DWORD dwFlags) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE TransitionOffline( 
            /* [unique][in] */ __RPC__in_opt HWND hwndParent,
            /* [in] */ DWORD dwFlags,
            /* [in] */ BOOL bForceOpenFilesClosed,
            /* [out] */ __RPC__out BOOL *pbOpenFilesPreventedTransition) = 0;
        
    };
    
    
#else 	/* C style interface */

    typedef struct IOfflineFilesConnectionInfoVtbl
    {
        BEGIN_INTERFACE
        
        DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            __RPC__in IOfflineFilesConnectionInfo * This,
            /* [in] */ __RPC__in REFIID riid,
            /* [annotation][iid_is][out] */ 
            _COM_Outptr_  void **ppvObject);
        
        DECLSPEC_XFGVIRT(IUnknown, AddRef)
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            __RPC__in IOfflineFilesConnectionInfo * This);
        
        DECLSPEC_XFGVIRT(IUnknown, Release)
        ULONG ( STDMETHODCALLTYPE *Release )( 
            __RPC__in IOfflineFilesConnectionInfo * This);
        
        DECLSPEC_XFGVIRT(IOfflineFilesConnectionInfo, GetConnectState)
        HRESULT ( STDMETHODCALLTYPE *GetConnectState )( 
            __RPC__in IOfflineFilesConnectionInfo * This,
            /* [out] */ __RPC__out OFFLINEFILES_CONNECT_STATE *pConnectState,
            /* [out] */ __RPC__out OFFLINEFILES_OFFLINE_REASON *pOfflineReason);
        
        DECLSPEC_XFGVIRT(IOfflineFilesConnectionInfo, SetConnectState)
        HRESULT ( STDMETHODCALLTYPE *SetConnectState )( 
            __RPC__in IOfflineFilesConnectionInfo * This,
            /* [unique][in] */ __RPC__in_opt HWND hwndParent,
            /* [in] */ DWORD dwFlags,
            /* [in] */ OFFLINEFILES_CONNECT_STATE ConnectState);
        
        DECLSPEC_XFGVIRT(IOfflineFilesConnectionInfo, TransitionOnline)
        HRESULT ( STDMETHODCALLTYPE *TransitionOnline )( 
            __RPC__in IOfflineFilesConnectionInfo * This,
            /* [unique][in] */ __RPC__in_opt HWND hwndParent,
            /* [in] */ DWORD dwFlags);
        
        DECLSPEC_XFGVIRT(IOfflineFilesConnectionInfo, TransitionOffline)
        HRESULT ( STDMETHODCALLTYPE *TransitionOffline )( 
            __RPC__in IOfflineFilesConnectionInfo * This,
            /* [unique][in] */ __RPC__in_opt HWND hwndParent,
            /* [in] */ DWORD dwFlags,
            /* [in] */ BOOL bForceOpenFilesClosed,
            /* [out] */ __RPC__out BOOL *pbOpenFilesPreventedTransition);
        
        END_INTERFACE
    } IOfflineFilesConnectionInfoVtbl;

    interface IOfflineFilesConnectionInfo
    {
        CONST_VTBL struct IOfflineFilesConnectionInfoVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IOfflineFilesConnectionInfo_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IOfflineFilesConnectionInfo_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IOfflineFilesConnectionInfo_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IOfflineFilesConnectionInfo_GetConnectState(This,pConnectState,pOfflineReason)	\
    ( (This)->lpVtbl -> GetConnectState(This,pConnectState,pOfflineReason) ) 

#define IOfflineFilesConnectionInfo_SetConnectState(This,hwndParent,dwFlags,ConnectState)	\
    ( (This)->lpVtbl -> SetConnectState(This,hwndParent,dwFlags,ConnectState) ) 

#define IOfflineFilesConnectionInfo_TransitionOnline(This,hwndParent,dwFlags)	\
    ( (This)->lpVtbl -> TransitionOnline(This,hwndParent,dwFlags) ) 

#define IOfflineFilesConnectionInfo_TransitionOffline(This,hwndParent,dwFlags,bForceOpenFilesClosed,pbOpenFilesPreventedTransition)	\
    ( (This)->lpVtbl -> TransitionOffline(This,hwndParent,dwFlags,bForceOpenFilesClosed,pbOpenFilesPreventedTransition) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __IOfflineFilesConnectionInfo_INTERFACE_DEFINED__ */


#ifndef __IOfflineFilesShareInfo_INTERFACE_DEFINED__
#define __IOfflineFilesShareInfo_INTERFACE_DEFINED__

/* interface IOfflineFilesShareInfo */
/* [unique][helpstring][uuid][object] */ 


EXTERN_C const IID IID_IOfflineFilesShareInfo;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("7BCC43E7-31CE-4ca4-8CCD-1CFF2DC494DA")
    IOfflineFilesShareInfo : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE GetShareItem( 
            /* [out] */ __RPC__deref_out_opt IOfflineFilesShareItem **ppShareItem) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetShareCachingMode( 
            /* [out] */ __RPC__out OFFLINEFILES_CACHING_MODE *pCachingMode) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE IsShareDfsJunction( 
            /* [out] */ __RPC__out BOOL *pbIsDfsJunction) = 0;
        
    };
    
    
#else 	/* C style interface */

    typedef struct IOfflineFilesShareInfoVtbl
    {
        BEGIN_INTERFACE
        
        DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            __RPC__in IOfflineFilesShareInfo * This,
            /* [in] */ __RPC__in REFIID riid,
            /* [annotation][iid_is][out] */ 
            _COM_Outptr_  void **ppvObject);
        
        DECLSPEC_XFGVIRT(IUnknown, AddRef)
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            __RPC__in IOfflineFilesShareInfo * This);
        
        DECLSPEC_XFGVIRT(IUnknown, Release)
        ULONG ( STDMETHODCALLTYPE *Release )( 
            __RPC__in IOfflineFilesShareInfo * This);
        
        DECLSPEC_XFGVIRT(IOfflineFilesShareInfo, GetShareItem)
        HRESULT ( STDMETHODCALLTYPE *GetShareItem )( 
            __RPC__in IOfflineFilesShareInfo * This,
            /* [out] */ __RPC__deref_out_opt IOfflineFilesShareItem **ppShareItem);
        
        DECLSPEC_XFGVIRT(IOfflineFilesShareInfo, GetShareCachingMode)
        HRESULT ( STDMETHODCALLTYPE *GetShareCachingMode )( 
            __RPC__in IOfflineFilesShareInfo * This,
            /* [out] */ __RPC__out OFFLINEFILES_CACHING_MODE *pCachingMode);
        
        DECLSPEC_XFGVIRT(IOfflineFilesShareInfo, IsShareDfsJunction)
        HRESULT ( STDMETHODCALLTYPE *IsShareDfsJunction )( 
            __RPC__in IOfflineFilesShareInfo * This,
            /* [out] */ __RPC__out BOOL *pbIsDfsJunction);
        
        END_INTERFACE
    } IOfflineFilesShareInfoVtbl;

    interface IOfflineFilesShareInfo
    {
        CONST_VTBL struct IOfflineFilesShareInfoVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IOfflineFilesShareInfo_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IOfflineFilesShareInfo_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IOfflineFilesShareInfo_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IOfflineFilesShareInfo_GetShareItem(This,ppShareItem)	\
    ( (This)->lpVtbl -> GetShareItem(This,ppShareItem) ) 

#define IOfflineFilesShareInfo_GetShareCachingMode(This,pCachingMode)	\
    ( (This)->lpVtbl -> GetShareCachingMode(This,pCachingMode) ) 

#define IOfflineFilesShareInfo_IsShareDfsJunction(This,pbIsDfsJunction)	\
    ( (This)->lpVtbl -> IsShareDfsJunction(This,pbIsDfsJunction) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __IOfflineFilesShareInfo_INTERFACE_DEFINED__ */


#ifndef __IOfflineFilesSuspend_INTERFACE_DEFINED__
#define __IOfflineFilesSuspend_INTERFACE_DEFINED__

/* interface IOfflineFilesSuspend */
/* [helpstring][uuid][object] */ 


EXTERN_C const IID IID_IOfflineFilesSuspend;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("62c4560f-bc0b-48ca-ad9d-34cb528d99a9")
    IOfflineFilesSuspend : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE SuspendRoot( 
            /* [in] */ BOOL bSuspend) = 0;
        
    };
    
    
#else 	/* C style interface */

    typedef struct IOfflineFilesSuspendVtbl
    {
        BEGIN_INTERFACE
        
        DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            __RPC__in IOfflineFilesSuspend * This,
            /* [in] */ __RPC__in REFIID riid,
            /* [annotation][iid_is][out] */ 
            _COM_Outptr_  void **ppvObject);
        
        DECLSPEC_XFGVIRT(IUnknown, AddRef)
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            __RPC__in IOfflineFilesSuspend * This);
        
        DECLSPEC_XFGVIRT(IUnknown, Release)
        ULONG ( STDMETHODCALLTYPE *Release )( 
            __RPC__in IOfflineFilesSuspend * This);
        
        DECLSPEC_XFGVIRT(IOfflineFilesSuspend, SuspendRoot)
        HRESULT ( STDMETHODCALLTYPE *SuspendRoot )( 
            __RPC__in IOfflineFilesSuspend * This,
            /* [in] */ BOOL bSuspend);
        
        END_INTERFACE
    } IOfflineFilesSuspendVtbl;

    interface IOfflineFilesSuspend
    {
        CONST_VTBL struct IOfflineFilesSuspendVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IOfflineFilesSuspend_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IOfflineFilesSuspend_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IOfflineFilesSuspend_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IOfflineFilesSuspend_SuspendRoot(This,bSuspend)	\
    ( (This)->lpVtbl -> SuspendRoot(This,bSuspend) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __IOfflineFilesSuspend_INTERFACE_DEFINED__ */


#ifndef __IOfflineFilesSuspendInfo_INTERFACE_DEFINED__
#define __IOfflineFilesSuspendInfo_INTERFACE_DEFINED__

/* interface IOfflineFilesSuspendInfo */
/* [helpstring][uuid][object] */ 


EXTERN_C const IID IID_IOfflineFilesSuspendInfo;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("a457c25b-4e9c-4b04-85af-8932ccd97889")
    IOfflineFilesSuspendInfo : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE IsSuspended( 
            /* [out] */ __RPC__out BOOL *pbSuspended,
            /* [out] */ __RPC__out BOOL *pbSuspendedRoot) = 0;
        
    };
    
    
#else 	/* C style interface */

    typedef struct IOfflineFilesSuspendInfoVtbl
    {
        BEGIN_INTERFACE
        
        DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            __RPC__in IOfflineFilesSuspendInfo * This,
            /* [in] */ __RPC__in REFIID riid,
            /* [annotation][iid_is][out] */ 
            _COM_Outptr_  void **ppvObject);
        
        DECLSPEC_XFGVIRT(IUnknown, AddRef)
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            __RPC__in IOfflineFilesSuspendInfo * This);
        
        DECLSPEC_XFGVIRT(IUnknown, Release)
        ULONG ( STDMETHODCALLTYPE *Release )( 
            __RPC__in IOfflineFilesSuspendInfo * This);
        
        DECLSPEC_XFGVIRT(IOfflineFilesSuspendInfo, IsSuspended)
        HRESULT ( STDMETHODCALLTYPE *IsSuspended )( 
            __RPC__in IOfflineFilesSuspendInfo * This,
            /* [out] */ __RPC__out BOOL *pbSuspended,
            /* [out] */ __RPC__out BOOL *pbSuspendedRoot);
        
        END_INTERFACE
    } IOfflineFilesSuspendInfoVtbl;

    interface IOfflineFilesSuspendInfo
    {
        CONST_VTBL struct IOfflineFilesSuspendInfoVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IOfflineFilesSuspendInfo_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IOfflineFilesSuspendInfo_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IOfflineFilesSuspendInfo_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IOfflineFilesSuspendInfo_IsSuspended(This,pbSuspended,pbSuspendedRoot)	\
    ( (This)->lpVtbl -> IsSuspended(This,pbSuspended,pbSuspendedRoot) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __IOfflineFilesSuspendInfo_INTERFACE_DEFINED__ */


#ifndef __IOfflineFilesSetting_INTERFACE_DEFINED__
#define __IOfflineFilesSetting_INTERFACE_DEFINED__

/* interface IOfflineFilesSetting */
/* [helpstring][uuid][object] */ 


EXTERN_C const IID IID_IOfflineFilesSetting;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("D871D3F7-F613-48a1-827E-7A34E560FFF6")
    IOfflineFilesSetting : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE GetName( 
            /* [string][out] */ __RPC__deref_out_opt_string LPWSTR *ppszName) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetValueType( 
            /* [out] */ __RPC__out OFFLINEFILES_SETTING_VALUE_TYPE *pType) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetPreference( 
            /* [out] */ __RPC__out VARIANT *pvarValue,
            /* [in] */ DWORD dwScope) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetPreferenceScope( 
            /* [out] */ __RPC__out DWORD *pdwScope) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE SetPreference( 
            /* [in] */ __RPC__in const VARIANT *pvarValue,
            /* [in] */ DWORD dwScope) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE DeletePreference( 
            /* [in] */ DWORD dwScope) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetPolicy( 
            /* [out] */ __RPC__out VARIANT *pvarValue,
            /* [in] */ DWORD dwScope) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetPolicyScope( 
            /* [out] */ __RPC__out DWORD *pdwScope) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetValue( 
            /* [out] */ __RPC__out VARIANT *pvarValue,
            /* [out] */ __RPC__out BOOL *pbSetByPolicy) = 0;
        
    };
    
    
#else 	/* C style interface */

    typedef struct IOfflineFilesSettingVtbl
    {
        BEGIN_INTERFACE
        
        DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            __RPC__in IOfflineFilesSetting * This,
            /* [in] */ __RPC__in REFIID riid,
            /* [annotation][iid_is][out] */ 
            _COM_Outptr_  void **ppvObject);
        
        DECLSPEC_XFGVIRT(IUnknown, AddRef)
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            __RPC__in IOfflineFilesSetting * This);
        
        DECLSPEC_XFGVIRT(IUnknown, Release)
        ULONG ( STDMETHODCALLTYPE *Release )( 
            __RPC__in IOfflineFilesSetting * This);
        
        DECLSPEC_XFGVIRT(IOfflineFilesSetting, GetName)
        HRESULT ( STDMETHODCALLTYPE *GetName )( 
            __RPC__in IOfflineFilesSetting * This,
            /* [string][out] */ __RPC__deref_out_opt_string LPWSTR *ppszName);
        
        DECLSPEC_XFGVIRT(IOfflineFilesSetting, GetValueType)
        HRESULT ( STDMETHODCALLTYPE *GetValueType )( 
            __RPC__in IOfflineFilesSetting * This,
            /* [out] */ __RPC__out OFFLINEFILES_SETTING_VALUE_TYPE *pType);
        
        DECLSPEC_XFGVIRT(IOfflineFilesSetting, GetPreference)
        HRESULT ( STDMETHODCALLTYPE *GetPreference )( 
            __RPC__in IOfflineFilesSetting * This,
            /* [out] */ __RPC__out VARIANT *pvarValue,
            /* [in] */ DWORD dwScope);
        
        DECLSPEC_XFGVIRT(IOfflineFilesSetting, GetPreferenceScope)
        HRESULT ( STDMETHODCALLTYPE *GetPreferenceScope )( 
            __RPC__in IOfflineFilesSetting * This,
            /* [out] */ __RPC__out DWORD *pdwScope);
        
        DECLSPEC_XFGVIRT(IOfflineFilesSetting, SetPreference)
        HRESULT ( STDMETHODCALLTYPE *SetPreference )( 
            __RPC__in IOfflineFilesSetting * This,
            /* [in] */ __RPC__in const VARIANT *pvarValue,
            /* [in] */ DWORD dwScope);
        
        DECLSPEC_XFGVIRT(IOfflineFilesSetting, DeletePreference)
        HRESULT ( STDMETHODCALLTYPE *DeletePreference )( 
            __RPC__in IOfflineFilesSetting * This,
            /* [in] */ DWORD dwScope);
        
        DECLSPEC_XFGVIRT(IOfflineFilesSetting, GetPolicy)
        HRESULT ( STDMETHODCALLTYPE *GetPolicy )( 
            __RPC__in IOfflineFilesSetting * This,
            /* [out] */ __RPC__out VARIANT *pvarValue,
            /* [in] */ DWORD dwScope);
        
        DECLSPEC_XFGVIRT(IOfflineFilesSetting, GetPolicyScope)
        HRESULT ( STDMETHODCALLTYPE *GetPolicyScope )( 
            __RPC__in IOfflineFilesSetting * This,
            /* [out] */ __RPC__out DWORD *pdwScope);
        
        DECLSPEC_XFGVIRT(IOfflineFilesSetting, GetValue)
        HRESULT ( STDMETHODCALLTYPE *GetValue )( 
            __RPC__in IOfflineFilesSetting * This,
            /* [out] */ __RPC__out VARIANT *pvarValue,
            /* [out] */ __RPC__out BOOL *pbSetByPolicy);
        
        END_INTERFACE
    } IOfflineFilesSettingVtbl;

    interface IOfflineFilesSetting
    {
        CONST_VTBL struct IOfflineFilesSettingVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IOfflineFilesSetting_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IOfflineFilesSetting_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IOfflineFilesSetting_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IOfflineFilesSetting_GetName(This,ppszName)	\
    ( (This)->lpVtbl -> GetName(This,ppszName) ) 

#define IOfflineFilesSetting_GetValueType(This,pType)	\
    ( (This)->lpVtbl -> GetValueType(This,pType) ) 

#define IOfflineFilesSetting_GetPreference(This,pvarValue,dwScope)	\
    ( (This)->lpVtbl -> GetPreference(This,pvarValue,dwScope) ) 

#define IOfflineFilesSetting_GetPreferenceScope(This,pdwScope)	\
    ( (This)->lpVtbl -> GetPreferenceScope(This,pdwScope) ) 

#define IOfflineFilesSetting_SetPreference(This,pvarValue,dwScope)	\
    ( (This)->lpVtbl -> SetPreference(This,pvarValue,dwScope) ) 

#define IOfflineFilesSetting_DeletePreference(This,dwScope)	\
    ( (This)->lpVtbl -> DeletePreference(This,dwScope) ) 

#define IOfflineFilesSetting_GetPolicy(This,pvarValue,dwScope)	\
    ( (This)->lpVtbl -> GetPolicy(This,pvarValue,dwScope) ) 

#define IOfflineFilesSetting_GetPolicyScope(This,pdwScope)	\
    ( (This)->lpVtbl -> GetPolicyScope(This,pdwScope) ) 

#define IOfflineFilesSetting_GetValue(This,pvarValue,pbSetByPolicy)	\
    ( (This)->lpVtbl -> GetValue(This,pvarValue,pbSetByPolicy) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __IOfflineFilesSetting_INTERFACE_DEFINED__ */


#ifndef __IEnumOfflineFilesSettings_INTERFACE_DEFINED__
#define __IEnumOfflineFilesSettings_INTERFACE_DEFINED__

/* interface IEnumOfflineFilesSettings */
/* [unique][helpstring][uuid][object] */ 


EXTERN_C const IID IID_IEnumOfflineFilesSettings;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("729680C4-1A38-47bc-9E5C-02C51562AC30")
    IEnumOfflineFilesSettings : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE Next( 
            /* [in] */ ULONG celt,
            /* [length_is][size_is][out] */ __RPC__out_ecount_part(celt, *pceltFetched) IOfflineFilesSetting **rgelt,
            /* [out] */ __RPC__out ULONG *pceltFetched) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE Skip( 
            /* [in] */ ULONG celt) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE Reset( void) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE Clone( 
            /* [out] */ __RPC__deref_out_opt IEnumOfflineFilesSettings **ppenum) = 0;
        
    };
    
    
#else 	/* C style interface */

    typedef struct IEnumOfflineFilesSettingsVtbl
    {
        BEGIN_INTERFACE
        
        DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            __RPC__in IEnumOfflineFilesSettings * This,
            /* [in] */ __RPC__in REFIID riid,
            /* [annotation][iid_is][out] */ 
            _COM_Outptr_  void **ppvObject);
        
        DECLSPEC_XFGVIRT(IUnknown, AddRef)
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            __RPC__in IEnumOfflineFilesSettings * This);
        
        DECLSPEC_XFGVIRT(IUnknown, Release)
        ULONG ( STDMETHODCALLTYPE *Release )( 
            __RPC__in IEnumOfflineFilesSettings * This);
        
        DECLSPEC_XFGVIRT(IEnumOfflineFilesSettings, Next)
        HRESULT ( STDMETHODCALLTYPE *Next )( 
            __RPC__in IEnumOfflineFilesSettings * This,
            /* [in] */ ULONG celt,
            /* [length_is][size_is][out] */ __RPC__out_ecount_part(celt, *pceltFetched) IOfflineFilesSetting **rgelt,
            /* [out] */ __RPC__out ULONG *pceltFetched);
        
        DECLSPEC_XFGVIRT(IEnumOfflineFilesSettings, Skip)
        HRESULT ( STDMETHODCALLTYPE *Skip )( 
            __RPC__in IEnumOfflineFilesSettings * This,
            /* [in] */ ULONG celt);
        
        DECLSPEC_XFGVIRT(IEnumOfflineFilesSettings, Reset)
        HRESULT ( STDMETHODCALLTYPE *Reset )( 
            __RPC__in IEnumOfflineFilesSettings * This);
        
        DECLSPEC_XFGVIRT(IEnumOfflineFilesSettings, Clone)
        HRESULT ( STDMETHODCALLTYPE *Clone )( 
            __RPC__in IEnumOfflineFilesSettings * This,
            /* [out] */ __RPC__deref_out_opt IEnumOfflineFilesSettings **ppenum);
        
        END_INTERFACE
    } IEnumOfflineFilesSettingsVtbl;

    interface IEnumOfflineFilesSettings
    {
        CONST_VTBL struct IEnumOfflineFilesSettingsVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IEnumOfflineFilesSettings_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IEnumOfflineFilesSettings_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IEnumOfflineFilesSettings_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IEnumOfflineFilesSettings_Next(This,celt,rgelt,pceltFetched)	\
    ( (This)->lpVtbl -> Next(This,celt,rgelt,pceltFetched) ) 

#define IEnumOfflineFilesSettings_Skip(This,celt)	\
    ( (This)->lpVtbl -> Skip(This,celt) ) 

#define IEnumOfflineFilesSettings_Reset(This)	\
    ( (This)->lpVtbl -> Reset(This) ) 

#define IEnumOfflineFilesSettings_Clone(This,ppenum)	\
    ( (This)->lpVtbl -> Clone(This,ppenum) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __IEnumOfflineFilesSettings_INTERFACE_DEFINED__ */


#ifndef __IOfflineFilesCache_INTERFACE_DEFINED__
#define __IOfflineFilesCache_INTERFACE_DEFINED__

/* interface IOfflineFilesCache */
/* [unique][helpstring][uuid][object] */ 


EXTERN_C const IID IID_IOfflineFilesCache;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("855d6203-7914-48b9-8d40-4c56f5acffc5")
    IOfflineFilesCache : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE Synchronize( 
            /* [unique][in] */ __RPC__in_opt HWND hwndParent,
            /* [string][size_is][in] */ __RPC__in_ecount_full(cPaths) LPCWSTR *rgpszPaths,
            /* [in] */ ULONG cPaths,
            /* [in] */ BOOL bAsync,
            /* [in] */ DWORD dwSyncControl,
            /* [unique][in] */ __RPC__in_opt IOfflineFilesSyncConflictHandler *pISyncConflictHandler,
            /* [unique][in] */ __RPC__in_opt IOfflineFilesSyncProgress *pIProgress,
            /* [unique][in] */ __RPC__in_opt GUID *pSyncId) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE DeleteItems( 
            /* [string][size_is][in] */ __RPC__in_ecount_full(cPaths) LPCWSTR *rgpszPaths,
            /* [in] */ ULONG cPaths,
            /* [in] */ DWORD dwFlags,
            /* [in] */ BOOL bAsync,
            /* [unique][in] */ __RPC__in_opt IOfflineFilesSimpleProgress *pIProgress) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE DeleteItemsForUser( 
            /* [string][in] */ __RPC__in_string LPCWSTR pszUser,
            /* [string][size_is][in] */ __RPC__in_ecount_full(cPaths) LPCWSTR *rgpszPaths,
            /* [in] */ ULONG cPaths,
            /* [in] */ DWORD dwFlags,
            /* [in] */ BOOL bAsync,
            /* [unique][in] */ __RPC__in_opt IOfflineFilesSimpleProgress *pIProgress) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE Pin( 
            /* [unique][in] */ __RPC__in_opt HWND hwndParent,
            /* [string][size_is][in] */ __RPC__in_ecount_full(cPaths) LPCWSTR *rgpszPaths,
            /* [in] */ ULONG cPaths,
            /* [in] */ BOOL bDeep,
            /* [in] */ BOOL bAsync,
            /* [in] */ DWORD dwPinControlFlags,
            /* [unique][in] */ __RPC__in_opt IOfflineFilesSyncProgress *pIProgress) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE Unpin( 
            /* [unique][in] */ __RPC__in_opt HWND hwndParent,
            /* [string][size_is][in] */ __RPC__in_ecount_full(cPaths) LPCWSTR *rgpszPaths,
            /* [in] */ ULONG cPaths,
            /* [in] */ BOOL bDeep,
            /* [in] */ BOOL bAsync,
            /* [in] */ DWORD dwPinControlFlags,
            /* [unique][in] */ __RPC__in_opt IOfflineFilesSyncProgress *pIProgress) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetEncryptionStatus( 
            /* [out] */ __RPC__out BOOL *pbEncrypted,
            /* [out] */ __RPC__out BOOL *pbPartial) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE Encrypt( 
            /* [unique][in] */ __RPC__in_opt HWND hwndParent,
            /* [in] */ BOOL bEncrypt,
            /* [in] */ DWORD dwEncryptionControlFlags,
            /* [in] */ BOOL bAsync,
            /* [unique][in] */ __RPC__in_opt IOfflineFilesSyncProgress *pIProgress) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE FindItem( 
            /* [string][in] */ __RPC__in_string LPCWSTR pszPath,
            /* [in] */ DWORD dwQueryFlags,
            /* [out] */ __RPC__deref_out_opt IOfflineFilesItem **ppItem) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE FindItemEx( 
            /* [string][in] */ __RPC__in_string LPCWSTR pszPath,
            /* [unique][in] */ __RPC__in_opt IOfflineFilesItemFilter *pIncludeFileFilter,
            /* [unique][in] */ __RPC__in_opt IOfflineFilesItemFilter *pIncludeDirFilter,
            /* [unique][in] */ __RPC__in_opt IOfflineFilesItemFilter *pExcludeFileFilter,
            /* [unique][in] */ __RPC__in_opt IOfflineFilesItemFilter *pExcludeDirFilter,
            /* [in] */ DWORD dwQueryFlags,
            /* [out] */ __RPC__deref_out_opt IOfflineFilesItem **ppItem) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE RenameItem( 
            /* [string][in] */ __RPC__in_string LPCWSTR pszPathOriginal,
            /* [string][in] */ __RPC__in_string LPCWSTR pszPathNew,
            /* [in] */ BOOL bReplaceIfExists) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetLocation( 
            /* [string][out] */ __RPC__deref_out_opt_string LPWSTR *ppszPath) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetDiskSpaceInformation( 
            /* [out] */ __RPC__out ULONGLONG *pcbVolumeTotal,
            /* [out] */ __RPC__out ULONGLONG *pcbLimit,
            /* [out] */ __RPC__out ULONGLONG *pcbUsed,
            /* [out] */ __RPC__out ULONGLONG *pcbUnpinnedLimit,
            /* [out] */ __RPC__out ULONGLONG *pcbUnpinnedUsed) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE SetDiskSpaceLimits( 
            /* [in] */ ULONGLONG cbLimit,
            /* [in] */ ULONGLONG cbUnpinnedLimit) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE ProcessAdminPinPolicy( 
            /* [unique][in] */ __RPC__in_opt IOfflineFilesSyncProgress *pPinProgress,
            /* [unique][in] */ __RPC__in_opt IOfflineFilesSyncProgress *pUnpinProgress) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetSettingObject( 
            /* [string][in] */ __RPC__in_string LPCWSTR pszSettingName,
            /* [out] */ __RPC__deref_out_opt IOfflineFilesSetting **ppSetting) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE EnumSettingObjects( 
            /* [out] */ __RPC__deref_out_opt IEnumOfflineFilesSettings **ppEnum) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE IsPathCacheable( 
            /* [string][in] */ __RPC__in_string LPCWSTR pszPath,
            /* [out] */ __RPC__out BOOL *pbCacheable,
            /* [out] */ __RPC__out OFFLINEFILES_CACHING_MODE *pShareCachingMode) = 0;
        
    };
    
    
#else 	/* C style interface */

    typedef struct IOfflineFilesCacheVtbl
    {
        BEGIN_INTERFACE
        
        DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            __RPC__in IOfflineFilesCache * This,
            /* [in] */ __RPC__in REFIID riid,
            /* [annotation][iid_is][out] */ 
            _COM_Outptr_  void **ppvObject);
        
        DECLSPEC_XFGVIRT(IUnknown, AddRef)
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            __RPC__in IOfflineFilesCache * This);
        
        DECLSPEC_XFGVIRT(IUnknown, Release)
        ULONG ( STDMETHODCALLTYPE *Release )( 
            __RPC__in IOfflineFilesCache * This);
        
        DECLSPEC_XFGVIRT(IOfflineFilesCache, Synchronize)
        HRESULT ( STDMETHODCALLTYPE *Synchronize )( 
            __RPC__in IOfflineFilesCache * This,
            /* [unique][in] */ __RPC__in_opt HWND hwndParent,
            /* [string][size_is][in] */ __RPC__in_ecount_full(cPaths) LPCWSTR *rgpszPaths,
            /* [in] */ ULONG cPaths,
            /* [in] */ BOOL bAsync,
            /* [in] */ DWORD dwSyncControl,
            /* [unique][in] */ __RPC__in_opt IOfflineFilesSyncConflictHandler *pISyncConflictHandler,
            /* [unique][in] */ __RPC__in_opt IOfflineFilesSyncProgress *pIProgress,
            /* [unique][in] */ __RPC__in_opt GUID *pSyncId);
        
        DECLSPEC_XFGVIRT(IOfflineFilesCache, DeleteItems)
        HRESULT ( STDMETHODCALLTYPE *DeleteItems )( 
            __RPC__in IOfflineFilesCache * This,
            /* [string][size_is][in] */ __RPC__in_ecount_full(cPaths) LPCWSTR *rgpszPaths,
            /* [in] */ ULONG cPaths,
            /* [in] */ DWORD dwFlags,
            /* [in] */ BOOL bAsync,
            /* [unique][in] */ __RPC__in_opt IOfflineFilesSimpleProgress *pIProgress);
        
        DECLSPEC_XFGVIRT(IOfflineFilesCache, DeleteItemsForUser)
        HRESULT ( STDMETHODCALLTYPE *DeleteItemsForUser )( 
            __RPC__in IOfflineFilesCache * This,
            /* [string][in] */ __RPC__in_string LPCWSTR pszUser,
            /* [string][size_is][in] */ __RPC__in_ecount_full(cPaths) LPCWSTR *rgpszPaths,
            /* [in] */ ULONG cPaths,
            /* [in] */ DWORD dwFlags,
            /* [in] */ BOOL bAsync,
            /* [unique][in] */ __RPC__in_opt IOfflineFilesSimpleProgress *pIProgress);
        
        DECLSPEC_XFGVIRT(IOfflineFilesCache, Pin)
        HRESULT ( STDMETHODCALLTYPE *Pin )( 
            __RPC__in IOfflineFilesCache * This,
            /* [unique][in] */ __RPC__in_opt HWND hwndParent,
            /* [string][size_is][in] */ __RPC__in_ecount_full(cPaths) LPCWSTR *rgpszPaths,
            /* [in] */ ULONG cPaths,
            /* [in] */ BOOL bDeep,
            /* [in] */ BOOL bAsync,
            /* [in] */ DWORD dwPinControlFlags,
            /* [unique][in] */ __RPC__in_opt IOfflineFilesSyncProgress *pIProgress);
        
        DECLSPEC_XFGVIRT(IOfflineFilesCache, Unpin)
        HRESULT ( STDMETHODCALLTYPE *Unpin )( 
            __RPC__in IOfflineFilesCache * This,
            /* [unique][in] */ __RPC__in_opt HWND hwndParent,
            /* [string][size_is][in] */ __RPC__in_ecount_full(cPaths) LPCWSTR *rgpszPaths,
            /* [in] */ ULONG cPaths,
            /* [in] */ BOOL bDeep,
            /* [in] */ BOOL bAsync,
            /* [in] */ DWORD dwPinControlFlags,
            /* [unique][in] */ __RPC__in_opt IOfflineFilesSyncProgress *pIProgress);
        
        DECLSPEC_XFGVIRT(IOfflineFilesCache, GetEncryptionStatus)
        HRESULT ( STDMETHODCALLTYPE *GetEncryptionStatus )( 
            __RPC__in IOfflineFilesCache * This,
            /* [out] */ __RPC__out BOOL *pbEncrypted,
            /* [out] */ __RPC__out BOOL *pbPartial);
        
        DECLSPEC_XFGVIRT(IOfflineFilesCache, Encrypt)
        HRESULT ( STDMETHODCALLTYPE *Encrypt )( 
            __RPC__in IOfflineFilesCache * This,
            /* [unique][in] */ __RPC__in_opt HWND hwndParent,
            /* [in] */ BOOL bEncrypt,
            /* [in] */ DWORD dwEncryptionControlFlags,
            /* [in] */ BOOL bAsync,
            /* [unique][in] */ __RPC__in_opt IOfflineFilesSyncProgress *pIProgress);
        
        DECLSPEC_XFGVIRT(IOfflineFilesCache, FindItem)
        HRESULT ( STDMETHODCALLTYPE *FindItem )( 
            __RPC__in IOfflineFilesCache * This,
            /* [string][in] */ __RPC__in_string LPCWSTR pszPath,
            /* [in] */ DWORD dwQueryFlags,
            /* [out] */ __RPC__deref_out_opt IOfflineFilesItem **ppItem);
        
        DECLSPEC_XFGVIRT(IOfflineFilesCache, FindItemEx)
        HRESULT ( STDMETHODCALLTYPE *FindItemEx )( 
            __RPC__in IOfflineFilesCache * This,
            /* [string][in] */ __RPC__in_string LPCWSTR pszPath,
            /* [unique][in] */ __RPC__in_opt IOfflineFilesItemFilter *pIncludeFileFilter,
            /* [unique][in] */ __RPC__in_opt IOfflineFilesItemFilter *pIncludeDirFilter,
            /* [unique][in] */ __RPC__in_opt IOfflineFilesItemFilter *pExcludeFileFilter,
            /* [unique][in] */ __RPC__in_opt IOfflineFilesItemFilter *pExcludeDirFilter,
            /* [in] */ DWORD dwQueryFlags,
            /* [out] */ __RPC__deref_out_opt IOfflineFilesItem **ppItem);
        
        DECLSPEC_XFGVIRT(IOfflineFilesCache, RenameItem)
        HRESULT ( STDMETHODCALLTYPE *RenameItem )( 
            __RPC__in IOfflineFilesCache * This,
            /* [string][in] */ __RPC__in_string LPCWSTR pszPathOriginal,
            /* [string][in] */ __RPC__in_string LPCWSTR pszPathNew,
            /* [in] */ BOOL bReplaceIfExists);
        
        DECLSPEC_XFGVIRT(IOfflineFilesCache, GetLocation)
        HRESULT ( STDMETHODCALLTYPE *GetLocation )( 
            __RPC__in IOfflineFilesCache * This,
            /* [string][out] */ __RPC__deref_out_opt_string LPWSTR *ppszPath);
        
        DECLSPEC_XFGVIRT(IOfflineFilesCache, GetDiskSpaceInformation)
        HRESULT ( STDMETHODCALLTYPE *GetDiskSpaceInformation )( 
            __RPC__in IOfflineFilesCache * This,
            /* [out] */ __RPC__out ULONGLONG *pcbVolumeTotal,
            /* [out] */ __RPC__out ULONGLONG *pcbLimit,
            /* [out] */ __RPC__out ULONGLONG *pcbUsed,
            /* [out] */ __RPC__out ULONGLONG *pcbUnpinnedLimit,
            /* [out] */ __RPC__out ULONGLONG *pcbUnpinnedUsed);
        
        DECLSPEC_XFGVIRT(IOfflineFilesCache, SetDiskSpaceLimits)
        HRESULT ( STDMETHODCALLTYPE *SetDiskSpaceLimits )( 
            __RPC__in IOfflineFilesCache * This,
            /* [in] */ ULONGLONG cbLimit,
            /* [in] */ ULONGLONG cbUnpinnedLimit);
        
        DECLSPEC_XFGVIRT(IOfflineFilesCache, ProcessAdminPinPolicy)
        HRESULT ( STDMETHODCALLTYPE *ProcessAdminPinPolicy )( 
            __RPC__in IOfflineFilesCache * This,
            /* [unique][in] */ __RPC__in_opt IOfflineFilesSyncProgress *pPinProgress,
            /* [unique][in] */ __RPC__in_opt IOfflineFilesSyncProgress *pUnpinProgress);
        
        DECLSPEC_XFGVIRT(IOfflineFilesCache, GetSettingObject)
        HRESULT ( STDMETHODCALLTYPE *GetSettingObject )( 
            __RPC__in IOfflineFilesCache * This,
            /* [string][in] */ __RPC__in_string LPCWSTR pszSettingName,
            /* [out] */ __RPC__deref_out_opt IOfflineFilesSetting **ppSetting);
        
        DECLSPEC_XFGVIRT(IOfflineFilesCache, EnumSettingObjects)
        HRESULT ( STDMETHODCALLTYPE *EnumSettingObjects )( 
            __RPC__in IOfflineFilesCache * This,
            /* [out] */ __RPC__deref_out_opt IEnumOfflineFilesSettings **ppEnum);
        
        DECLSPEC_XFGVIRT(IOfflineFilesCache, IsPathCacheable)
        HRESULT ( STDMETHODCALLTYPE *IsPathCacheable )( 
            __RPC__in IOfflineFilesCache * This,
            /* [string][in] */ __RPC__in_string LPCWSTR pszPath,
            /* [out] */ __RPC__out BOOL *pbCacheable,
            /* [out] */ __RPC__out OFFLINEFILES_CACHING_MODE *pShareCachingMode);
        
        END_INTERFACE
    } IOfflineFilesCacheVtbl;

    interface IOfflineFilesCache
    {
        CONST_VTBL struct IOfflineFilesCacheVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IOfflineFilesCache_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IOfflineFilesCache_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IOfflineFilesCache_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IOfflineFilesCache_Synchronize(This,hwndParent,rgpszPaths,cPaths,bAsync,dwSyncControl,pISyncConflictHandler,pIProgress,pSyncId)	\
    ( (This)->lpVtbl -> Synchronize(This,hwndParent,rgpszPaths,cPaths,bAsync,dwSyncControl,pISyncConflictHandler,pIProgress,pSyncId) ) 

#define IOfflineFilesCache_DeleteItems(This,rgpszPaths,cPaths,dwFlags,bAsync,pIProgress)	\
    ( (This)->lpVtbl -> DeleteItems(This,rgpszPaths,cPaths,dwFlags,bAsync,pIProgress) ) 

#define IOfflineFilesCache_DeleteItemsForUser(This,pszUser,rgpszPaths,cPaths,dwFlags,bAsync,pIProgress)	\
    ( (This)->lpVtbl -> DeleteItemsForUser(This,pszUser,rgpszPaths,cPaths,dwFlags,bAsync,pIProgress) ) 

#define IOfflineFilesCache_Pin(This,hwndParent,rgpszPaths,cPaths,bDeep,bAsync,dwPinControlFlags,pIProgress)	\
    ( (This)->lpVtbl -> Pin(This,hwndParent,rgpszPaths,cPaths,bDeep,bAsync,dwPinControlFlags,pIProgress) ) 

#define IOfflineFilesCache_Unpin(This,hwndParent,rgpszPaths,cPaths,bDeep,bAsync,dwPinControlFlags,pIProgress)	\
    ( (This)->lpVtbl -> Unpin(This,hwndParent,rgpszPaths,cPaths,bDeep,bAsync,dwPinControlFlags,pIProgress) ) 

#define IOfflineFilesCache_GetEncryptionStatus(This,pbEncrypted,pbPartial)	\
    ( (This)->lpVtbl -> GetEncryptionStatus(This,pbEncrypted,pbPartial) ) 

#define IOfflineFilesCache_Encrypt(This,hwndParent,bEncrypt,dwEncryptionControlFlags,bAsync,pIProgress)	\
    ( (This)->lpVtbl -> Encrypt(This,hwndParent,bEncrypt,dwEncryptionControlFlags,bAsync,pIProgress) ) 

#define IOfflineFilesCache_FindItem(This,pszPath,dwQueryFlags,ppItem)	\
    ( (This)->lpVtbl -> FindItem(This,pszPath,dwQueryFlags,ppItem) ) 

#define IOfflineFilesCache_FindItemEx(This,pszPath,pIncludeFileFilter,pIncludeDirFilter,pExcludeFileFilter,pExcludeDirFilter,dwQueryFlags,ppItem)	\
    ( (This)->lpVtbl -> FindItemEx(This,pszPath,pIncludeFileFilter,pIncludeDirFilter,pExcludeFileFilter,pExcludeDirFilter,dwQueryFlags,ppItem) ) 

#define IOfflineFilesCache_RenameItem(This,pszPathOriginal,pszPathNew,bReplaceIfExists)	\
    ( (This)->lpVtbl -> RenameItem(This,pszPathOriginal,pszPathNew,bReplaceIfExists) ) 

#define IOfflineFilesCache_GetLocation(This,ppszPath)	\
    ( (This)->lpVtbl -> GetLocation(This,ppszPath) ) 

#define IOfflineFilesCache_GetDiskSpaceInformation(This,pcbVolumeTotal,pcbLimit,pcbUsed,pcbUnpinnedLimit,pcbUnpinnedUsed)	\
    ( (This)->lpVtbl -> GetDiskSpaceInformation(This,pcbVolumeTotal,pcbLimit,pcbUsed,pcbUnpinnedLimit,pcbUnpinnedUsed) ) 

#define IOfflineFilesCache_SetDiskSpaceLimits(This,cbLimit,cbUnpinnedLimit)	\
    ( (This)->lpVtbl -> SetDiskSpaceLimits(This,cbLimit,cbUnpinnedLimit) ) 

#define IOfflineFilesCache_ProcessAdminPinPolicy(This,pPinProgress,pUnpinProgress)	\
    ( (This)->lpVtbl -> ProcessAdminPinPolicy(This,pPinProgress,pUnpinProgress) ) 

#define IOfflineFilesCache_GetSettingObject(This,pszSettingName,ppSetting)	\
    ( (This)->lpVtbl -> GetSettingObject(This,pszSettingName,ppSetting) ) 

#define IOfflineFilesCache_EnumSettingObjects(This,ppEnum)	\
    ( (This)->lpVtbl -> EnumSettingObjects(This,ppEnum) ) 

#define IOfflineFilesCache_IsPathCacheable(This,pszPath,pbCacheable,pShareCachingMode)	\
    ( (This)->lpVtbl -> IsPathCacheable(This,pszPath,pbCacheable,pShareCachingMode) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __IOfflineFilesCache_INTERFACE_DEFINED__ */


#ifndef __IOfflineFilesCache2_INTERFACE_DEFINED__
#define __IOfflineFilesCache2_INTERFACE_DEFINED__

/* interface IOfflineFilesCache2 */
/* [unique][helpstring][uuid][object] */ 


EXTERN_C const IID IID_IOfflineFilesCache2;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("8c075039-1551-4ed9-8781-56705c04d3c0")
    IOfflineFilesCache2 : public IOfflineFilesCache
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE RenameItemEx( 
            /* [string][in] */ __RPC__in_string LPCWSTR pszPathOriginal,
            /* [string][in] */ __RPC__in_string LPCWSTR pszPathNew,
            /* [in] */ BOOL bReplaceIfExists) = 0;
        
    };
    
    
#else 	/* C style interface */

    typedef struct IOfflineFilesCache2Vtbl
    {
        BEGIN_INTERFACE
        
        DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            __RPC__in IOfflineFilesCache2 * This,
            /* [in] */ __RPC__in REFIID riid,
            /* [annotation][iid_is][out] */ 
            _COM_Outptr_  void **ppvObject);
        
        DECLSPEC_XFGVIRT(IUnknown, AddRef)
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            __RPC__in IOfflineFilesCache2 * This);
        
        DECLSPEC_XFGVIRT(IUnknown, Release)
        ULONG ( STDMETHODCALLTYPE *Release )( 
            __RPC__in IOfflineFilesCache2 * This);
        
        DECLSPEC_XFGVIRT(IOfflineFilesCache, Synchronize)
        HRESULT ( STDMETHODCALLTYPE *Synchronize )( 
            __RPC__in IOfflineFilesCache2 * This,
            /* [unique][in] */ __RPC__in_opt HWND hwndParent,
            /* [string][size_is][in] */ __RPC__in_ecount_full(cPaths) LPCWSTR *rgpszPaths,
            /* [in] */ ULONG cPaths,
            /* [in] */ BOOL bAsync,
            /* [in] */ DWORD dwSyncControl,
            /* [unique][in] */ __RPC__in_opt IOfflineFilesSyncConflictHandler *pISyncConflictHandler,
            /* [unique][in] */ __RPC__in_opt IOfflineFilesSyncProgress *pIProgress,
            /* [unique][in] */ __RPC__in_opt GUID *pSyncId);
        
        DECLSPEC_XFGVIRT(IOfflineFilesCache, DeleteItems)
        HRESULT ( STDMETHODCALLTYPE *DeleteItems )( 
            __RPC__in IOfflineFilesCache2 * This,
            /* [string][size_is][in] */ __RPC__in_ecount_full(cPaths) LPCWSTR *rgpszPaths,
            /* [in] */ ULONG cPaths,
            /* [in] */ DWORD dwFlags,
            /* [in] */ BOOL bAsync,
            /* [unique][in] */ __RPC__in_opt IOfflineFilesSimpleProgress *pIProgress);
        
        DECLSPEC_XFGVIRT(IOfflineFilesCache, DeleteItemsForUser)
        HRESULT ( STDMETHODCALLTYPE *DeleteItemsForUser )( 
            __RPC__in IOfflineFilesCache2 * This,
            /* [string][in] */ __RPC__in_string LPCWSTR pszUser,
            /* [string][size_is][in] */ __RPC__in_ecount_full(cPaths) LPCWSTR *rgpszPaths,
            /* [in] */ ULONG cPaths,
            /* [in] */ DWORD dwFlags,
            /* [in] */ BOOL bAsync,
            /* [unique][in] */ __RPC__in_opt IOfflineFilesSimpleProgress *pIProgress);
        
        DECLSPEC_XFGVIRT(IOfflineFilesCache, Pin)
        HRESULT ( STDMETHODCALLTYPE *Pin )( 
            __RPC__in IOfflineFilesCache2 * This,
            /* [unique][in] */ __RPC__in_opt HWND hwndParent,
            /* [string][size_is][in] */ __RPC__in_ecount_full(cPaths) LPCWSTR *rgpszPaths,
            /* [in] */ ULONG cPaths,
            /* [in] */ BOOL bDeep,
            /* [in] */ BOOL bAsync,
            /* [in] */ DWORD dwPinControlFlags,
            /* [unique][in] */ __RPC__in_opt IOfflineFilesSyncProgress *pIProgress);
        
        DECLSPEC_XFGVIRT(IOfflineFilesCache, Unpin)
        HRESULT ( STDMETHODCALLTYPE *Unpin )( 
            __RPC__in IOfflineFilesCache2 * This,
            /* [unique][in] */ __RPC__in_opt HWND hwndParent,
            /* [string][size_is][in] */ __RPC__in_ecount_full(cPaths) LPCWSTR *rgpszPaths,
            /* [in] */ ULONG cPaths,
            /* [in] */ BOOL bDeep,
            /* [in] */ BOOL bAsync,
            /* [in] */ DWORD dwPinControlFlags,
            /* [unique][in] */ __RPC__in_opt IOfflineFilesSyncProgress *pIProgress);
        
        DECLSPEC_XFGVIRT(IOfflineFilesCache, GetEncryptionStatus)
        HRESULT ( STDMETHODCALLTYPE *GetEncryptionStatus )( 
            __RPC__in IOfflineFilesCache2 * This,
            /* [out] */ __RPC__out BOOL *pbEncrypted,
            /* [out] */ __RPC__out BOOL *pbPartial);
        
        DECLSPEC_XFGVIRT(IOfflineFilesCache, Encrypt)
        HRESULT ( STDMETHODCALLTYPE *Encrypt )( 
            __RPC__in IOfflineFilesCache2 * This,
            /* [unique][in] */ __RPC__in_opt HWND hwndParent,
            /* [in] */ BOOL bEncrypt,
            /* [in] */ DWORD dwEncryptionControlFlags,
            /* [in] */ BOOL bAsync,
            /* [unique][in] */ __RPC__in_opt IOfflineFilesSyncProgress *pIProgress);
        
        DECLSPEC_XFGVIRT(IOfflineFilesCache, FindItem)
        HRESULT ( STDMETHODCALLTYPE *FindItem )( 
            __RPC__in IOfflineFilesCache2 * This,
            /* [string][in] */ __RPC__in_string LPCWSTR pszPath,
            /* [in] */ DWORD dwQueryFlags,
            /* [out] */ __RPC__deref_out_opt IOfflineFilesItem **ppItem);
        
        DECLSPEC_XFGVIRT(IOfflineFilesCache, FindItemEx)
        HRESULT ( STDMETHODCALLTYPE *FindItemEx )( 
            __RPC__in IOfflineFilesCache2 * This,
            /* [string][in] */ __RPC__in_string LPCWSTR pszPath,
            /* [unique][in] */ __RPC__in_opt IOfflineFilesItemFilter *pIncludeFileFilter,
            /* [unique][in] */ __RPC__in_opt IOfflineFilesItemFilter *pIncludeDirFilter,
            /* [unique][in] */ __RPC__in_opt IOfflineFilesItemFilter *pExcludeFileFilter,
            /* [unique][in] */ __RPC__in_opt IOfflineFilesItemFilter *pExcludeDirFilter,
            /* [in] */ DWORD dwQueryFlags,
            /* [out] */ __RPC__deref_out_opt IOfflineFilesItem **ppItem);
        
        DECLSPEC_XFGVIRT(IOfflineFilesCache, RenameItem)
        HRESULT ( STDMETHODCALLTYPE *RenameItem )( 
            __RPC__in IOfflineFilesCache2 * This,
            /* [string][in] */ __RPC__in_string LPCWSTR pszPathOriginal,
            /* [string][in] */ __RPC__in_string LPCWSTR pszPathNew,
            /* [in] */ BOOL bReplaceIfExists);
        
        DECLSPEC_XFGVIRT(IOfflineFilesCache, GetLocation)
        HRESULT ( STDMETHODCALLTYPE *GetLocation )( 
            __RPC__in IOfflineFilesCache2 * This,
            /* [string][out] */ __RPC__deref_out_opt_string LPWSTR *ppszPath);
        
        DECLSPEC_XFGVIRT(IOfflineFilesCache, GetDiskSpaceInformation)
        HRESULT ( STDMETHODCALLTYPE *GetDiskSpaceInformation )( 
            __RPC__in IOfflineFilesCache2 * This,
            /* [out] */ __RPC__out ULONGLONG *pcbVolumeTotal,
            /* [out] */ __RPC__out ULONGLONG *pcbLimit,
            /* [out] */ __RPC__out ULONGLONG *pcbUsed,
            /* [out] */ __RPC__out ULONGLONG *pcbUnpinnedLimit,
            /* [out] */ __RPC__out ULONGLONG *pcbUnpinnedUsed);
        
        DECLSPEC_XFGVIRT(IOfflineFilesCache, SetDiskSpaceLimits)
        HRESULT ( STDMETHODCALLTYPE *SetDiskSpaceLimits )( 
            __RPC__in IOfflineFilesCache2 * This,
            /* [in] */ ULONGLONG cbLimit,
            /* [in] */ ULONGLONG cbUnpinnedLimit);
        
        DECLSPEC_XFGVIRT(IOfflineFilesCache, ProcessAdminPinPolicy)
        HRESULT ( STDMETHODCALLTYPE *ProcessAdminPinPolicy )( 
            __RPC__in IOfflineFilesCache2 * This,
            /* [unique][in] */ __RPC__in_opt IOfflineFilesSyncProgress *pPinProgress,
            /* [unique][in] */ __RPC__in_opt IOfflineFilesSyncProgress *pUnpinProgress);
        
        DECLSPEC_XFGVIRT(IOfflineFilesCache, GetSettingObject)
        HRESULT ( STDMETHODCALLTYPE *GetSettingObject )( 
            __RPC__in IOfflineFilesCache2 * This,
            /* [string][in] */ __RPC__in_string LPCWSTR pszSettingName,
            /* [out] */ __RPC__deref_out_opt IOfflineFilesSetting **ppSetting);
        
        DECLSPEC_XFGVIRT(IOfflineFilesCache, EnumSettingObjects)
        HRESULT ( STDMETHODCALLTYPE *EnumSettingObjects )( 
            __RPC__in IOfflineFilesCache2 * This,
            /* [out] */ __RPC__deref_out_opt IEnumOfflineFilesSettings **ppEnum);
        
        DECLSPEC_XFGVIRT(IOfflineFilesCache, IsPathCacheable)
        HRESULT ( STDMETHODCALLTYPE *IsPathCacheable )( 
            __RPC__in IOfflineFilesCache2 * This,
            /* [string][in] */ __RPC__in_string LPCWSTR pszPath,
            /* [out] */ __RPC__out BOOL *pbCacheable,
            /* [out] */ __RPC__out OFFLINEFILES_CACHING_MODE *pShareCachingMode);
        
        DECLSPEC_XFGVIRT(IOfflineFilesCache2, RenameItemEx)
        HRESULT ( STDMETHODCALLTYPE *RenameItemEx )( 
            __RPC__in IOfflineFilesCache2 * This,
            /* [string][in] */ __RPC__in_string LPCWSTR pszPathOriginal,
            /* [string][in] */ __RPC__in_string LPCWSTR pszPathNew,
            /* [in] */ BOOL bReplaceIfExists);
        
        END_INTERFACE
    } IOfflineFilesCache2Vtbl;

    interface IOfflineFilesCache2
    {
        CONST_VTBL struct IOfflineFilesCache2Vtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IOfflineFilesCache2_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IOfflineFilesCache2_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IOfflineFilesCache2_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IOfflineFilesCache2_Synchronize(This,hwndParent,rgpszPaths,cPaths,bAsync,dwSyncControl,pISyncConflictHandler,pIProgress,pSyncId)	\
    ( (This)->lpVtbl -> Synchronize(This,hwndParent,rgpszPaths,cPaths,bAsync,dwSyncControl,pISyncConflictHandler,pIProgress,pSyncId) ) 

#define IOfflineFilesCache2_DeleteItems(This,rgpszPaths,cPaths,dwFlags,bAsync,pIProgress)	\
    ( (This)->lpVtbl -> DeleteItems(This,rgpszPaths,cPaths,dwFlags,bAsync,pIProgress) ) 

#define IOfflineFilesCache2_DeleteItemsForUser(This,pszUser,rgpszPaths,cPaths,dwFlags,bAsync,pIProgress)	\
    ( (This)->lpVtbl -> DeleteItemsForUser(This,pszUser,rgpszPaths,cPaths,dwFlags,bAsync,pIProgress) ) 

#define IOfflineFilesCache2_Pin(This,hwndParent,rgpszPaths,cPaths,bDeep,bAsync,dwPinControlFlags,pIProgress)	\
    ( (This)->lpVtbl -> Pin(This,hwndParent,rgpszPaths,cPaths,bDeep,bAsync,dwPinControlFlags,pIProgress) ) 

#define IOfflineFilesCache2_Unpin(This,hwndParent,rgpszPaths,cPaths,bDeep,bAsync,dwPinControlFlags,pIProgress)	\
    ( (This)->lpVtbl -> Unpin(This,hwndParent,rgpszPaths,cPaths,bDeep,bAsync,dwPinControlFlags,pIProgress) ) 

#define IOfflineFilesCache2_GetEncryptionStatus(This,pbEncrypted,pbPartial)	\
    ( (This)->lpVtbl -> GetEncryptionStatus(This,pbEncrypted,pbPartial) ) 

#define IOfflineFilesCache2_Encrypt(This,hwndParent,bEncrypt,dwEncryptionControlFlags,bAsync,pIProgress)	\
    ( (This)->lpVtbl -> Encrypt(This,hwndParent,bEncrypt,dwEncryptionControlFlags,bAsync,pIProgress) ) 

#define IOfflineFilesCache2_FindItem(This,pszPath,dwQueryFlags,ppItem)	\
    ( (This)->lpVtbl -> FindItem(This,pszPath,dwQueryFlags,ppItem) ) 

#define IOfflineFilesCache2_FindItemEx(This,pszPath,pIncludeFileFilter,pIncludeDirFilter,pExcludeFileFilter,pExcludeDirFilter,dwQueryFlags,ppItem)	\
    ( (This)->lpVtbl -> FindItemEx(This,pszPath,pIncludeFileFilter,pIncludeDirFilter,pExcludeFileFilter,pExcludeDirFilter,dwQueryFlags,ppItem) ) 

#define IOfflineFilesCache2_RenameItem(This,pszPathOriginal,pszPathNew,bReplaceIfExists)	\
    ( (This)->lpVtbl -> RenameItem(This,pszPathOriginal,pszPathNew,bReplaceIfExists) ) 

#define IOfflineFilesCache2_GetLocation(This,ppszPath)	\
    ( (This)->lpVtbl -> GetLocation(This,ppszPath) ) 

#define IOfflineFilesCache2_GetDiskSpaceInformation(This,pcbVolumeTotal,pcbLimit,pcbUsed,pcbUnpinnedLimit,pcbUnpinnedUsed)	\
    ( (This)->lpVtbl -> GetDiskSpaceInformation(This,pcbVolumeTotal,pcbLimit,pcbUsed,pcbUnpinnedLimit,pcbUnpinnedUsed) ) 

#define IOfflineFilesCache2_SetDiskSpaceLimits(This,cbLimit,cbUnpinnedLimit)	\
    ( (This)->lpVtbl -> SetDiskSpaceLimits(This,cbLimit,cbUnpinnedLimit) ) 

#define IOfflineFilesCache2_ProcessAdminPinPolicy(This,pPinProgress,pUnpinProgress)	\
    ( (This)->lpVtbl -> ProcessAdminPinPolicy(This,pPinProgress,pUnpinProgress) ) 

#define IOfflineFilesCache2_GetSettingObject(This,pszSettingName,ppSetting)	\
    ( (This)->lpVtbl -> GetSettingObject(This,pszSettingName,ppSetting) ) 

#define IOfflineFilesCache2_EnumSettingObjects(This,ppEnum)	\
    ( (This)->lpVtbl -> EnumSettingObjects(This,ppEnum) ) 

#define IOfflineFilesCache2_IsPathCacheable(This,pszPath,pbCacheable,pShareCachingMode)	\
    ( (This)->lpVtbl -> IsPathCacheable(This,pszPath,pbCacheable,pShareCachingMode) ) 


#define IOfflineFilesCache2_RenameItemEx(This,pszPathOriginal,pszPathNew,bReplaceIfExists)	\
    ( (This)->lpVtbl -> RenameItemEx(This,pszPathOriginal,pszPathNew,bReplaceIfExists) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __IOfflineFilesCache2_INTERFACE_DEFINED__ */



#ifndef __OfflineFilesObjects_LIBRARY_DEFINED__
#define __OfflineFilesObjects_LIBRARY_DEFINED__

/* library OfflineFilesObjects */
/* [version][lcid][helpstring][uuid] */ 


EXTERN_C const IID LIBID_OfflineFilesObjects;

EXTERN_C const CLSID CLSID_OfflineFilesSetting;

#ifdef __cplusplus

class DECLSPEC_UUID("FD3659E9-A920-4123-AD64-7FC76C7AACDF")
OfflineFilesSetting;
#endif

EXTERN_C const CLSID CLSID_OfflineFilesCache;

#ifdef __cplusplus

class DECLSPEC_UUID("48C6BE7C-3871-43cc-B46F-1449A1BB2FF3")
OfflineFilesCache;
#endif
#endif /* __OfflineFilesObjects_LIBRARY_DEFINED__ */

/* interface __MIDL_itf_cscobj_0000_0036 */
/* [local] */ 

#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion


extern RPC_IF_HANDLE __MIDL_itf_cscobj_0000_0036_v0_0_c_ifspec;
extern RPC_IF_HANDLE __MIDL_itf_cscobj_0000_0036_v0_0_s_ifspec;

/* Additional Prototypes for ALL interfaces */

unsigned long             __RPC_USER  HWND_UserSize(     __RPC__in unsigned long *, unsigned long            , __RPC__in HWND * ); 
unsigned char * __RPC_USER  HWND_UserMarshal(  __RPC__in unsigned long *, __RPC__inout_xcount(0) unsigned char *, __RPC__in HWND * ); 
unsigned char * __RPC_USER  HWND_UserUnmarshal(__RPC__in unsigned long *, __RPC__in_xcount(0) unsigned char *, __RPC__out HWND * ); 
void                      __RPC_USER  HWND_UserFree(     __RPC__in unsigned long *, __RPC__in HWND * ); 

unsigned long             __RPC_USER  VARIANT_UserSize(     __RPC__in unsigned long *, unsigned long            , __RPC__in VARIANT * ); 
unsigned char * __RPC_USER  VARIANT_UserMarshal(  __RPC__in unsigned long *, __RPC__inout_xcount(0) unsigned char *, __RPC__in VARIANT * ); 
unsigned char * __RPC_USER  VARIANT_UserUnmarshal(__RPC__in unsigned long *, __RPC__in_xcount(0) unsigned char *, __RPC__out VARIANT * ); 
void                      __RPC_USER  VARIANT_UserFree(     __RPC__in unsigned long *, __RPC__in VARIANT * ); 

unsigned long             __RPC_USER  HWND_UserSize64(     __RPC__in unsigned long *, unsigned long            , __RPC__in HWND * ); 
unsigned char * __RPC_USER  HWND_UserMarshal64(  __RPC__in unsigned long *, __RPC__inout_xcount(0) unsigned char *, __RPC__in HWND * ); 
unsigned char * __RPC_USER  HWND_UserUnmarshal64(__RPC__in unsigned long *, __RPC__in_xcount(0) unsigned char *, __RPC__out HWND * ); 
void                      __RPC_USER  HWND_UserFree64(     __RPC__in unsigned long *, __RPC__in HWND * ); 

unsigned long             __RPC_USER  VARIANT_UserSize64(     __RPC__in unsigned long *, unsigned long            , __RPC__in VARIANT * ); 
unsigned char * __RPC_USER  VARIANT_UserMarshal64(  __RPC__in unsigned long *, __RPC__inout_xcount(0) unsigned char *, __RPC__in VARIANT * ); 
unsigned char * __RPC_USER  VARIANT_UserUnmarshal64(__RPC__in unsigned long *, __RPC__in_xcount(0) unsigned char *, __RPC__out VARIANT * ); 
void                      __RPC_USER  VARIANT_UserFree64(     __RPC__in unsigned long *, __RPC__in VARIANT * ); 

/* end of Additional Prototypes */

#ifdef __cplusplus
}
#endif

#endif


